MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Ottieni il sottoinsieme dell'array in mongodb usando un'origine dell'array

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