Я знаю, что MongoDB способен обрабатывать много запросов/сек, но позвольте сказать, что я должен запрашивать много документов коллекции, учитывая их _id; что звучит лучше: сделать $in в атрибуте _id со всеми идентификаторами, которые я хочу получить, или запросить запросы findOne?
Mongodb: $в операторе и множество одиночных запросов
Ответ 1
Я бы определенно пошел с использованием запроса $in и предоставил массив _ids.
Пример:
db.collection.find({
"key": {
"$in": [
ObjectId("xxx"),
ObjectId("yyy"),
ObjectId("zzz")
]
}
})
Почему?
- Если вы выполняете цикл, для каждого запроса создаются и исчерпываются курсоры, которые могут создавать накладные расходы.
- Если вы не делаете этого на локальном компьютере, он также создает накладные расходы tcp/ip для каждого запроса. Локально вы можете использовать сокеты домена.
- По умолчанию создается индекс "_id", и сбор группы документов для возврата в пакетном запросе должен быть очень быстрым, поэтому нет необходимости разбивать это на более мелкие запросы.
Здесь есть дополнительная документация здесь, если вы хотите ее проверить.