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