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/

mongodb索引

上一篇:python创建mysql数据库中的表


下一篇:跨域The 'Access-Control-Allow-Origin' header contains multiple values '*, *', but only one is allowed.解决方案