MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Obtenha o subconjunto de array no mongodb usando uma fonte de array


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