Devi semplicemente $filter
l'array e mantieni solo i documenti secondari in cui il valore è un sottoinsieme dell'array di input. Nota che valore ecco un array di elementi in cui element è il campo incorporato value
.
let fruits = ["apple","banana","coconut"];
db.collection.aggregate([
{ "$project": {
"Element": {
"$filter": {
"input": "$Element",
"as": "el",
"cond": {
"$setIsSubset": [ [ "$$el.Value" ], fruits ]
}
}
}
}}
])
A partire da MongoDB 3.4* puoi usare $in
operatore nel $project
fase.
db.collection.aggregate([
{ "$project": {
"Element": {
"$filter": {
"input": "$Element",
"as": "el",
"cond": {
"$in": [ "$$el.Value", fruits ]
}
}
}
}}
])
*Versione non rilasciata di MongoDB al momento della stesura di questo testo