#mongodb #mongodb-query #aggregation-framework
#mongodb #mongodb-запрос #агрегация-фреймворк
Вопрос:
2 коллекции, которые у меня есть:
Users
:
{
_id: "user_unique_id_123",
email: "user@google.com"
}
И Products
:
{
_id: "unique_product_id",
name: "product name",
user: "user_unique_id_123"
}
В качестве входного параметра я получаю email address
и мне нужно извлечь все, Products
связанные с этим email address
.
Проблема в том, что предпочтительный способ просто делает только one
запрос к MongoDB, а не 2 отдельных запроса: для извлечения user Id
с помощью email
и после извлечения Products
с помощью user-id
.
Итак, не могли бы вы подсказать, возможно ли вообще иметь только один вызов вместо 2?
Комментарии:
1. Вы пробовали использовать $lookup ?
Ответ №1:
Вы можете сделать, как показано ниже
db.Users.aggregate([
{
"$lookup": {
"from": "Products",
"localField": "_id",
"foreignField": "user",
"as": "userProducts"
}
}
])
{"$lookup":
{
"from": "collection to join",
"localField": "field from the input documents",
"foreignField": "field from the documents of the from collection",
"as": "output array field"
}