Je hoeft alleen maar te $filter
de array en bewaar alleen dat subdocument waar de waarde is een subset van uw invoerarray. Merk op dat waarde hier is een elementarray waarbij element het ingesloten veld is value
.
let fruits = ["apple","banana","coconut"];
db.collection.aggregate([
{ "$project": {
"Element": {
"$filter": {
"input": "$Element",
"as": "el",
"cond": {
"$setIsSubset": [ [ "$$el.Value" ], fruits ]
}
}
}
}}
])
Vanaf MongoDB 3.4* kunt u de $in
. gebruiken operator in het $project
podium.
db.collection.aggregate([
{ "$project": {
"Element": {
"$filter": {
"input": "$Element",
"as": "el",
"cond": {
"$in": [ "$$el.Value", fruits ]
}
}
}
}}
])
*Niet-uitgebrachte versie van MongoDB op het moment van schrijven