1

如果我有用户集合:

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

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

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

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

4

1 回答 1

2

您可以在 users 集合上创建索引:

db.users.ensureIndex( {"groups" : 1} )

如果这样做,mongodb 将不会在您运行搜索时访问 groups 字段中的每个元素。利用

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

查看使用的索引。

根据查询,它可能根本不需要检索用户记录。例如,

db.users.count( { groups: "hockey"} )

是一个“覆盖查询”,可以单独使用索引来回答。有关更多信息,请参阅http://docs.mongodb.org/manual/tutorial/create-indexes-to-support-queries/

于 2013-09-05T16:50:32.723 回答