Você simplesmente precisa
$filter
a matriz e mantenha apenas os subdocumentos onde o valor é um subconjunto de sua matriz de entrada. Observe que valor aqui está uma matriz de elementos em que elemento é o campo incorporado value
. let fruits = ["apple","banana","coconut"];
db.collection.aggregate([
{ "$project": {
"Element": {
"$filter": {
"input": "$Element",
"as": "el",
"cond": {
"$setIsSubset": [ [ "$$el.Value" ], fruits ]
}
}
}
}}
])
A partir do MongoDB 3.4* você pode usar o
$in
operador no $project
etapa. db.collection.aggregate([
{ "$project": {
"Element": {
"$filter": {
"input": "$Element",
"as": "el",
"cond": {
"$in": [ "$$el.Value", fruits ]
}
}
}
}}
])
*Versão não lançada do MongoDB no momento da redação deste artigo