Mongodb-查询多键索引文档

Mongodb-查询多键索引文档,mongodb,indexing,multikey,Mongodb,Indexing,Multikey,我的问题是关于MongoDB在查询多键文档时的操作方式 假设我有这些文件: { 答:1,, b:2, c:['x','y','z'] }, { a:3, b:空, c:['x','z'] } 我的问题是: db..find({b:null,c:'x'}) 我的索引是: db..ensureIndex({c:1}) 我的问题是:对于上面的查询(要求c和b),MongoDB如何调用查询?它是否“看到”我在c上有一个索引,或者它是否尝试只查找c和b的索引 即使语句包括c和b使用.expla

我的问题是关于MongoDB在查询多键文档时的操作方式

假设我有这些文件:

{
答:1,,
b:2,
c:['x','y','z']
},
{
a:3,
b:空,
c:['x','z']
}

我的问题是:

db..find({b:null,c:'x'})

我的索引是:

db..ensureIndex({c:1})

我的问题是:对于上面的查询(要求
c
b
),MongoDB如何调用查询?它是否“看到”我在
c
上有一个索引,或者它是否尝试只查找
c
b
的索引


即使语句包括
c
b

使用.explain()方法在find()之后查找nscannedObjects和nscanned,查询也只会查找
c
的索引。它可以帮助您检查Index的使用情况刚刚完成的。。。nscannedObjects是集合的大小。为什么它要遍历整个集合,只是为了通过索引字段获取一些内容。我根据您的文档为自己制作了一个测试用例,为了在2个文档中搜索,我得到nscaned=1,这意味着它使用了索引。查看.explain()中的游标,如果它使用索引,则该游标应该类似于“BtreeCursor c_1”。现在可以了。为大型集合编制索引可能需要时间。