Sie müssen nur $filter
das Array und behalten nur die Unterdokumente, in denen der Wert steht ist eine Teilmenge Ihres Eingabearrays. Beachten Sie diesen Wert hier ist ein Elementarray, wobei element das eingebettete Feld value
ist .
let fruits = ["apple","banana","coconut"];
db.collection.aggregate([
{ "$project": {
"Element": {
"$filter": {
"input": "$Element",
"as": "el",
"cond": {
"$setIsSubset": [ [ "$$el.Value" ], fruits ]
}
}
}
}}
])
Ab MongoDB 3.4* können Sie den $in
verwenden -Operator im $project
Stufe.
db.collection.aggregate([
{ "$project": {
"Element": {
"$filter": {
"input": "$Element",
"as": "el",
"cond": {
"$in": [ "$$el.Value", fruits ]
}
}
}
}}
])
*Unveröffentlichte Version von MongoDB zum Zeitpunkt des Schreibens dieses Artikels