zoukankan      html  css  js  c++  java
  • mongodb索引

    语法:

    db.collection.createIndex(keys,options)
    options常用:
    background             Boolean 可以保证索引在后台运行,不影响其它操作,对于大集合数据比较有用。
    unique                 Boolean 是否唯一索引
    name                String 索引名称。不指定则默认生成
    sparse                Boolean    对文档中不存在的字段数据不启用索引;这个参数需要特别注意,如果设置为true的话,在索引字段中不会查询出不包含对应字段的文档.。默认值为 false.
    expireAfterSeconds    integer    指定一个以秒为单位的数值,完成 TTL设定,设定集合的生存时间。
    v                    index version    索引的版本号。默认的索引版本取决于mongod创建索引时运行的版本。
    weights                document    索引权重值,数值在 1 到 99,999 之间,表示该索引相对于其他索引字段的得分权重。
    default_language    string    对于文本索引,该参数决定了停用词及词干和词器的规则的列表。 默认为英语
    language_override    string    对于文本索引,该参数指定了包含在文档中的字段名,语言覆盖默认的language,默认值为 language.


    常用方法:

    db.collection.getIndexes()		查看集合索引
    
    db.collection.totalIndexSize()	查看集合索引大小
    
    db.collection.dropIndexes()		删除集合所有索引
    
    db.collection.dropIndex("索引名称")	删除指定索引

    常用索引:

    一,单列索引:
    
    单列无内嵌对象
    db.collection.createIndex({column:1}) 
    db.集合名.createIndex({列名:升序/(1)降序(-1)})
    
    单列有内嵌doument
    可以对整个列加索引,也可以对内嵌document里的某一个字段建立索引
    例如有document如下:
    {
    	"_id":ObjectId("xxxxxxxxxxxxxxxxxxxxxxxxx"),
    	"score":1034,
    	"location":{state:"NY",city:"New York"}
    }
    
    可以这样建:
    	db.collection.createIndex({location:1}) or db.collection.createIndex({"location.state":1})
    	
    查询的时候可以这样:
    	db.collection.find({"location":{"state":"CA","city":"NY"}})
    	db.collection.find({"location.state":"NY"})
    	
    
    二,复合索引
    	
    	最多支持32个字段复合索引
    	db.collection.createIndex({<field1>:<type>,<field2>:<type>,...})
    	
    	复合索引的顺序很重要,首先会按照field1的顺序排序,再在field1的顺序里按照field2的type排序
    	所以查询的时候可以全字段匹配,也可以匹配按顺序的第一个字段,有点类似早期的MYSQL,需要按索引的顺序写查询语句
    	
    	
    三,多键索引 在版本3.4中更改:仅适用于WiredTiger和内存存储引擎
    	为了索引一个包含数组值的字段,MongoDB为数组中的每个元素创建一个索引键。这些多键索引支持对数组字段的高效查询	
    	如果在一个数组类型上的field建立索引
    	直接用和单列索引的方法即可,mongodb会自动创建multikey index
    	
    四,文本索引
    	
    	针对field类型是string的建立文本索引
    	db.collection.createIndex({<field>:"text"})
    	
    	一个集合最多可以有1个文本索引,但是可以在多个string类型的field上建立一个文本索引
    	
    	例如:
    	db.collection.createIndex(
    		{
    			subject: "text",
    			comments: "text"
    		},
    		{
    			name:"mytextindex",
    			default_language:"english",
    			default_override:"language"
    		}
    	)

    官方网址 https://docs.mongodb.com/manual/indexes/

    PHP中常见的问题点,知识点,及盲点。
  • 相关阅读:
    【微信公众平台开发】公布动态新闻好帮手UEditor富文本
    Software Development and Newton&#39;s Laws of Motion
    组队赛第二场:字符串哈希+DP
    [ACM] hdu 4418 Time travel (高斯消元求期望)
    解决IE11无法下载文件的问题
    LeetCode :: Binary Tree Zigzag Level Order Traversal [tree, BFS]
    用Stack实现对多线程的管理范例
    同事的Excel中的图片突然不能选择
    HDU 1272 小希的迷宫 并查集
    将Datagridview中的数据导出至Excel中
  • 原文地址:https://www.cnblogs.com/sblack/p/12981742.html
Copyright © 2011-2022 走看看