MongoDb聚合检查对象数组中是否存在id

MongoDb聚合检查对象数组中是否存在id,mongodb,aggregation-framework,Mongodb,Aggregation Framework,我写了这个聚合,效果很好 db.ParcelStatus.aggregate([{ { $lookup: { from: "Parcel", localField: "parcelId", foreignField: "_id", as: "parcel" } }, { $unwind: {

我写了这个聚合,效果很好

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'

我不知道我怎样才能做到这一点。非常感谢您的帮助

只需添加此
$match
阶段:

{
    $match: {
        "parcel.parcelStatuses.statusRepositoryId": {$in: idArrayFromClient}
    }
}

您可以发布应用该条件的文档结构。@ PrasADy:您可以在PARSELSTATE <代码> { ID:`yid,StaseSaveStuoRyid:“StutuSid”,PARCELID:“PraseID”} /代码>这个匹配阶段需要在查找中还是在开始?嘿,汤姆,再次感谢您的回答,但我无法确定我需要在哪里修复此阶段,请您编写完整的聚合?这条路对吗?parcelStatuses.statusRepositoryId?parcelStatuses是数组而不是对象,因此我不确定是否可以像这样访问parcelStatuses数组中的statusrepositoryId,只需将此阶段添加到最后。(或在检索repositroy id的查找之后)。语法正确,这是Mongo的点表示法的行为: