Mongodb:$in 运算符与大量单个查询

发布于 2024-12-17 13:51:50 字数 110 浏览 0 评论 0原文

我知道 MongoDB 能够每秒处理大量请求,但假设我必须根据给定的 _id 查询集合的大量文档;什么听起来更好:在 _id 属性上使用我想要获取的所有 id 创建 $in,或者循环 findOne 查询?

I know MongoDB is able to handle a lot of requests/sec, but let's say I have to query a lot of documents of a collection given their _id; what sounds better: making a $in on the _id attribute with all the ids I want to get, or loop over findOne queries?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

掀纱窥君容 2024-12-24 13:51:50

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

示例:

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

为什么?

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

如果您想查看的话,这里还有一些其他文档。

I would definitely go with using the $in query and providing a array of _ids.

Example:

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

Why?

  • If you loop, there is a certain amount of setup and teardown for each query creating and exhausting cursors which would create overhead.
  • If you are not doing this on a local machine it also creates tcp/ip overhead for every request. Locally you could use domain sockets.
  • There is a index on "_id" created by default and collecting a group of documents to return in a batch request should be extremely fast so there is no need to break this up into smaller queries.

There's some additional documentation here if you want to check it out.

香草可樂 2024-12-24 13:51:50

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

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

If You want to find directly with MongoChef UI you can use this query:

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文