在mongodb中,搜索列表中包含元素的文档的时间复杂度是多少?

时间:2013-09-05 16:38:36

标签: mongodb mongodb-query

如果我有用户集合:

{
   name: "sue"
   age:  27
   groups: ["football", "hockey"]
}
...

db.users.find( { groups: 'hockey' } )

mongodb是否需要访问每个文档中的每个列表元素?

更一般地说,是否有运营时间成本指南?

1 个答案:

答案 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/