MongoDB——理论基础

来源:互联网 发布:淘宝一千零一夜 编辑:程序博客网 时间:2024/05/17 21:05

 建议:

  • 1.创建 查询中用到的所有键 的索引
  • 2.创建索引的缺点是 每次插入 更新 和删除的时候都会产生额外的开销,
  • 因为数据库不但要执行这些操作,还要将这些操作在集合的索引中标记。
  • 因此要尽可能的少建索引。每个集合默认的最大索引个数为64
  • 3.一般来说,查询要返回集合中一半以上的结果,用表扫描会比几乎每条文档都索引要高效一些
  • 4.对内嵌文档的键索引和普通键索引并无差异
  • 5.通过建立分级文档加快扫描速度:
    • 1.若文档没有层次的话,mongodb必须遍历文档中的每个字段
    • 2.使用内嵌文档我们可以建立自己得“树”,合理使用层次能够减少mongodb对字段的访问
  • 6.多条件and查询:将较苛刻的查询条件放在前面。可以减少工作量,尤其是在它有索引的时候

索引查询的限制:

索引不能被以下查询使用:
  • 1、正则表达式及非操作符,如$nin,$not 等
  • 2、算术运算符 ,如$mod
  • 3、$where 子句、
索引最大范围:
  • 1、集合中的索引不能超过64个
  • 2、索引名的长度不能超过125个字符
  • 3、一个复合索引最多可以有31个字段

全文搜索

mongodb全文搜索:
mongodb用的是开源的snowball分词器,支持多种语言,但是不支持中文
默认语言是english,也可以在创建全文索引的时候指定其他支持语言
db.de.ensureIndex( {txt: "text"}, {default_language: "german"} )
这样MongoDB就会认为“txt”中的文本是德语
mongodb全文检索中文方案:
MongoDB也支持文本的搜索,不过很可惜的是,MongoDB的$text不支持中文分词功能,在搜索中文文本时只会字符的匹配
  • 1.官方方案:在mongodb的文档类型中加字段,存分词结果,然后从该字段中匹配。
  • 2.lucene+IKAnalyzer:lucene 把大文本的数据 利用分词器 在新建的索引文件中建立索引取数据的时候从索引文件中取出mongodb 中的数据进行 索引的创建


0 0
原创粉丝点击