{"v" : 1, "key" : { "_id" : 1 }, "name": "_id_", "ns" : "test.category" }
{"v" : 1, "key" : { "_id" : 1 }, "name": "_id_", "ns" : "test.tea" }
{"v" : 1, "key" : { "email" : 1 },"name" : "sparse:1", "ns" : "test.tea"}
{"v" : 1, "key" : { "_id" : 1 }, "name": "_id_", "ns" : "test.users" }
{"v" : 1, "key" : { "info.city" : 1 },"name" : "info.city_1", "ns" :"test.users" }
?
2、查看查询计划:
为了分析查询性能及索引,一边获得更多查询方面有用的信息,可以使用如下命令:
db.collectionName.find(查询表达式).explain()

"cursor" :"BasicCursor" ——>表示索引没有发挥作用
"nscanned":1 ——>表示查询了多少个文档。
"n",:1 ——>表示返回的文档数量。
"millis":0 ——>表示整个查询的耗时。
"nscannedObjects" : 11, ——>理论上需要扫描多少行
?
3、后台创建索引
为已有数据的文档创建索引时,为了不阻塞其他操作,同时可以在后台创建索引,可以使用命令:db.test.ensureIndex({filed:1/-1},{"background":true})
相比阻塞创建索引而言,后台创建索引效率较低。
?
?
注意
1、如果数据集合比较小(一般来说是4m一下),此时如果使用sort()进行排序就不需要使用索引。
2、在使用组合索引查询时,查询字段的顺序必须和事先创建索引时的顺序保持一致。否则会出现上文提到的出现查不到的情况。
?
?