假设我在 MongoDB 中存储了具有以下结构的对象:
Transaction
{
_id
userId
accountId
}
并假设我有以下索引:
db.Transaction.ensureIndex({"userId": 1})
以下查询是否利用索引来最小化搜索时间?
db.Transaction.find( {userId: 'user1234', accountId: 'account1234'} );
也就是说,MongoDB 是否使用索引来“减少”结果userId
,然后进行表扫描accountId
?
db.Transaction.find( {userId: 'user1234', accountId: 'account1234'} ).explain()
{
"cursor" : "BtreeCursor userId_1",
"nscanned" : 2,
"nscannedObjects" : 2,
"n" : 1,
"millis" : 1,
"nYields" : 0,
"nChunkSkips" : 0,
"isMultiKey" : false,
"indexOnly" : false,
"indexBounds" : {
"userId" : [
[
"user1234",
"user1234"
]
]
}
看着explain()
查询说BtreeCursor userId_1
,所以我认为它让所有用户都使用userId
ofuser1234
然后扫描(仅有的两个项目)以找到accountId
of account1234
- 这是正确的吗?
提前致谢。