#node.js #mongodb #typeorm #node.js-typeorm
#node.js #mongodb #типирование #node.js-typeorm
Вопрос:
Итак, в моем проекте у меня есть 2 такие коллекции:
Показать коллекцию комнат
{
"_id":"5fdb3d5e253c844c1bd120c7",
"name": "Car Showroom 1", //show room
"soldUnits": 4,
"totalUnits": 10,
"epochTime": 1608210104,
"market": "area_name_1" //market
}
Эти документы добавляются каждый день, кроме того, show room
их может быть несколько markets
.
Сбор рынка
{
"id": "area_name_1",
"name": "Some Place Name",
"imageURL": "https://example.org/favicon.png"
}
Теперь мне нужно отобразить данные по следующему шаблону:
"showroom": {
"name": "Car Showroom 1",
"epochTime": 1608210104
},
"markets": [
{
"area": {
"id": "area_name_1",
"name": "Some Place Name",
"imageURL": "https://example.org/favicon.png"
},
"soldUnits": 2,
"totalUnits": 10
},
{
"area": {
"id": "area_name_2",
"name": "Some Place Name",
"imageURL": "https://example.org/favicon.png"
},
"soldUnits": 9,
"totalUnits": 20
}
]
}
Я использовал обычные методы агрегации, но, похоже, не могу найти решение для этого.
Приложение представляет собой приложение NodeJS (с использованием NextJS и TypeORM).
Кроме того, я довольно новичок в mongodb, поэтому помощь действительно ценится.
PS. Я думаю, что некоторые дубликаты будут присутствовать, поэтому было бы очень полезно указать мне, что я пропустил.
Ответ №1:
Вы пытались использовать $lookup?
{
$lookup:
{
from: <collection to join>,
localField: <field from the input documents>,
foreignField: <field from the documents of the "from" collection>,
as: <output array field>
}
}
https://docs.mongodb.com/manual/reference/operator/aggregation/lookup/
Комментарии:
1. Спасибо @daniel за ответ, но я знаю, что это не то, что я ищу, мне нужно
markets
, чтобы массив был заполнен с использованием самых последних значенийmarket
поля.