Vous avez simplement besoin de $filter
le tableau et ne conserver que les sous-documents où la valeur est un sous-ensemble de votre tableau d'entrée. Notez que valeur voici un tableau d'éléments où element est le champ incorporé value
.
let fruits = ["apple","banana","coconut"];
db.collection.aggregate([
{ "$project": {
"Element": {
"$filter": {
"input": "$Element",
"as": "el",
"cond": {
"$setIsSubset": [ [ "$$el.Value" ], fruits ]
}
}
}
}}
])
À partir de MongoDB 3.4*, vous pouvez utiliser le $in
opérateur dans le $project
scène.
db.collection.aggregate([
{ "$project": {
"Element": {
"$filter": {
"input": "$Element",
"as": "el",
"cond": {
"$in": [ "$$el.Value", fruits ]
}
}
}
}}
])
* Version inédite de MongoDB au moment de la rédaction de cet article