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

spa*_*ick 42 mongodb mongodb-query

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

Tyl*_*ock 50

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

例:

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

为什么?

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

这里也有一些额外的文件在这里,如果你想看看.

  • 如果$ in中有很多项目...说100或1000? (8认同)
  • 可以在 JSON 对象数组上使用 $in 吗? (2认同)