如果我有用户集合:
{
name: "sue"
age: 27
groups: ["football", "hockey"]
}
...
db.users.find( { groups: 'hockey' } )
mongodb是否需要访问每个文档中的每个列表元素?
更一般地说,是否有运营时间成本指南?
答案 0 :(得分:2)
您可以在users集合上创建索引:
db.users.ensureIndex( {"groups" : 1} )
如果这样做,当您运行搜索时,mongodb将不会访问组字段中的每个元素。使用
db.users.find( { groups: 'hockey' } ).explain()
查看使用的索引。
根据查询,可能根本不需要检索用户记录。例如,
db.users.count( { groups: "hockey"} )
是一个“覆盖查询”,可以单独使用索引来回答。有关详细信息,请参阅http://docs.mongodb.org/manual/tutorial/create-indexes-to-support-queries/。