Wystarczy $filter
tablicę i zachowaj tylko te dokumenty podrzędne, w których wartość jest podzbiorem tablicy wejściowej. Zwróć uwagę, że wartość tutaj jest jedna tablica elementów, gdzie element jest osadzonym polem value
.
let fruits = ["apple","banana","coconut"];
db.collection.aggregate([
{ "$project": {
"Element": {
"$filter": {
"input": "$Element",
"as": "el",
"cond": {
"$setIsSubset": [ [ "$$el.Value" ], fruits ]
}
}
}
}}
])
Począwszy od MongoDB 3.4* możesz użyć $in
operator w $project
scena.
db.collection.aggregate([
{ "$project": {
"Element": {
"$filter": {
"input": "$Element",
"as": "el",
"cond": {
"$in": [ "$$el.Value", fruits ]
}
}
}
}}
])
*Nieopublikowana wersja MongoDB w momencie pisania tego tekstu