У меня есть почти 4-5 таблиц, между которыми мне нужно объединиться. Я завершил это, используя $lookup
, также мне не нужны все поля из вторичных таблиц / объединенных таблиц. Мне нужны все столбцы Первичной таблицы. Итак, я написал $project
, чтобы выбрать необходимые столбцы.
Room.aggregate([{
$lookup: {
from: "users",
localField: "userID",
foreignField: "_id",
as: "user"
}
}, {
$lookup: {
from: "areas",
localField: "area",
foreignField: "_id",
as: "areas"
}
}, {
$unwind: "$user",
}, {$project : {
}
}]
Мне было интересно, могу ли я как-нибудь упростить этот запрос или создать его в отдельном месте и объединить с основным запросом в более удобочитаемом и более простом формате.
Кроме того, мне нужно указать каждый столбец в $project
, так как я хочу, чтобы все столбцы из таблицы Room и только несколько столбцов из объединенных таблиц.
Обновление
Вот мой пример определения коллекции
Номер:
{
"_id": {
"$oid": "5bcc2eb704c952178c4adbcd"
},
"userID": {
"$oid": "5c0d4e9e7377833f3c362a63"
},
"roomQTY": 1,
"roomPrice": 500,
"area": [
{
"$oid": "5bd4a49857e0c023b0dac7b2"
}
],
"rating": 3,
"amenities": [],
"images": [],
"isFurnished": true,
"isActive": true,
"category": {
"$oid": "5c0c1438ccbc830d248167bf"
},
"roomName": "Shree Laxminarayan Residency",
"person": "4",
"size": 157,
"createdDate": {
"$date": "2018-10-21T07:45:59.492Z"
},
"updatedDate": {
"$date": "2018-10-21T07:45:59.492Z"
},
"__v": 0
}
Удобства:
{
"_id": {
"$oid": "5bd4b19e57e0c023b0dac7cd"
},
"ammenitiesName": "Swimming Pool"
}
Категория:
{
"_id": {
"$oid": "5c0c1438ccbc830d248167bf"
},
"category_name": "PG"
}
Желание выхода:
{
"data": [
{
"_id": "5bcc2eb704c952178c4adbcd",
"userID": "5c0d4e9e7377833f3c362a63",
"roomQTY": 1,
"roomPrice": 500,
"rating": 3,
"amenities": [],
"images": [],
"isFurnished": true,
"isActive": true,
"category": "5c0c1438ccbc830d248167bf",
"roomName": "Shree Laxminarayan Residency",
"person": "4",
"size": 157,
"createdDate": "2018-10-21T07:45:59.492Z",
"updatedDate": "2018-10-21T07:45:59.492Z",
"username": "Hardik",
"areas": [
{
"_id": "5bd4a49857e0c023b0dac7b2",
"areaName": "South Bopal"
}
],
"ammenities": [
{
"ammentiesName": "Swimming Pool"
},
{
"ammentiesName": "Gym"
}
]
}
],
"code": 200
}