我知道 MongoDB 能够每秒处理很多请求,但是假设我必须查询给定 _id 的集合的很多文档;什么听起来更好:在 _id 属性上创建一个 $in 以及我想要获取的所有 id,或者循环 findOne 查询?
问问题
53195 次
2 回答
58
我肯定会使用 $in 查询并提供一个 _id 数组。
例子:
db.collection.find({
"key": {
"$in": [
ObjectId("xxx"),
ObjectId("yyy"),
ObjectId("zzz")
]
}
})
为什么?
- 如果你循环,每个查询都会有一定数量的设置和拆卸,创建和耗尽游标会产生开销。
- 如果您不在本地计算机上执行此操作,它还会为每个请求创建 tcp/ip 开销。在本地,您可以使用域套接字。
- 默认情况下在“_id”上创建了一个索引,并且收集一组文档以在批处理请求中返回应该非常快,因此无需将其分解为较小的查询。
如果您想查看,这里有一些额外的文档。
于 2011-11-21T22:53:26.213 回答
0
如果您想直接使用 MongoChef UI 进行查找,可以使用以下查询:
字段:{$in:[/Naveen Kumar/i, /Naveen/i, /Garshakurthy/i]}}
于 2021-06-19T04:30:01.490 回答