Mongodb:$ in in operator vs很多单个查询

时间:2011-11-21 22:27:57

标签: mongodb mongodb-query

我知道MongoDB能够处理很多请求/秒,但是假设我必须查询一个集合的大量文档给出它们的_id;什么听起来更好:使用我想要获取的所有ID在_id属性上创建$ in,或者循环遍历findOne查询?

2 个答案:

答案 0 :(得分:44)

我肯定会使用$ in查询并提供一个_ids数组。

示例:

db.collection.find({
    "key": {
        "$in": [
            ObjectId("xxx"),
            ObjectId("yyy"),
            ObjectId("zzz")
        ]
    }
})

为什么?

  • 如果循环,每个查询创建和耗尽游标都会有一定量的设置和拆卸,这会产生开销。
  • 如果您不在本地计算机上执行此操作,则还会为每个请求创建tcp / ip开销。在本地,您可以使用域套接字。
  • 默认情况下创建了一个“_id”索引,并且在批处理请求中收集要返回的一组文档应该非常快,因此无需将其分解为较小的查询。

如果您想查看它,还有一些额外的文档here

答案 1 :(得分:0)

如果您想直接使用 MongoChef UI 查找,可以使用此查询:

字段:{$in:[/Naveen Kumar/i, /Naveen/i, /Garshakurthy/i]}}