Агрегатная проверка MongoDb, существует ли идентификатор в массиве объектов - PullRequest
0 голосов
/ 18 июня 2020

Я написал этот агрегат, и он отлично работает

db.ParcelStatus.aggregate([{
     {
         $lookup: {
             from: "Parcel",
             localField: "parcelId",
             foreignField: "_id",
             as: "parcel"
         }
     },
     {
         $unwind: {
             path: "$parcel",
             preserveNullAndEmptyArrays: true
         }
     },
     {
         $lookup: {
             from: "ParcelStatus",
             localField: "parcel._id",
             foreignField: "parcelId",
             as: "parcel.parcelStatuses"
         }
     },
     {
         $lookup: {
             from: "Customer",
             localField: "parcel.customerData.customerId",
             foreignField: "_id",
             as: "parcel.customerData.customer"
         }
     },
     {
         $unwind: "$parcel.customerData.customer"
     }
 ])

Теперь в массиве ParcelStatus, ВКЛЮЧЕННОМ внутри объекта PARCEL, мне нужно проверить это

if(parcel.ParcelStatus.includes((x) => x.statusRepositoryId === 'ID's from frontend')
//then run $match on root against statusRepositoryId === 'SPECIFIC STATIC ID'

Я не знаю как я могу сделать это внутри агрегата. Мы будем благодарны за вашу помощь

1 Ответ

1 голос
/ 18 июня 2020

Просто добавьте этот $match этап:

{
    $match: {
        "parcel.parcelStatuses.statusRepositoryId": {$in: idArrayFromClient}
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...