Мой json будет выглядеть следующим образом:
{
"proj_id" : objectId1
"author": {},
"message": "This is post1",
"comments": [
{
"insId" : objectId1
"message": "Hii",
"location": [
{"select":"Y",id:1},
{"select":"N",,id:2}
]
},
{
"insId" : objectId2
"message": "Hii2",
"location": [
{"select":"Y",id:1},
{"select":"N",,id:2}
]
},
]
},
{
"proj_id" : objectId2
"author": {},
"message": "This is post2",
"comments": [
{
"insId" : objectId1
"message": "welcome2",
location: [
{"select":"Y",id:1},
{"select":"N",,id:2}
]
},
{
"insId" : objectId2
"message": "welcome4",
"location": [
{"select":"Y",id:1},
{"select":"N",,id:2}
]
}
]
}
Ожидаемый результат:
{
"proj_id" : objectId1
"author": {},
"message": "This is post1",
"comments": [
{
"insId" : objectId1
"message": "Hii",
"location": [
{"select":"Y",id:1},
]
}
]
}
Необходимо фильтровать на основе идентификатора проверки и данных проверки внутри. Я должен указать только местоположение, котороеИмея статус "Y"
Я попытался следующий код, отфильтровывая с проверкой Id
mongo.inspection.aggregate([
{$match: {"comments.insId": ObjectId(req.body.insId),"projectID":ObjectId(req.body.proj_id) }},
{$addFields : {"comments":{$filter:{ // We override the existing field!
input: "$comments",
as: "comments",
cond: {$eq: ["$$comments.insId", ObjectId(req.body.insId)]}
}}}}
],function(err,response){
console.log(response);
}
Вывод:
{
"proj_id" : objectId1
"author": {},
"message": "This is post1",
"comments": [
{
"insId" : objectId1
"message": "Hii",
"location": [
{"select":"Y",id:1},
{"select":"N",id:1}, // But it should not be list
]
}
]
}
Поэтому я должен фильтровать объект на основеcomments.insId и из этого единственного объекта я должен удалить объект внутри местоположения на основе статуса.Как мне получить этот результат в мангусте