MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Obtenir un sous-ensemble de tableau dans mongodb à l'aide d'une source de tableau

Vous avez simplement besoin de $filter le tableau et ne conserver que les sous-documents où la valeur est un sous-ensemble de votre tableau d'entrée. Notez que valeur voici un tableau d'éléments où element est le champ incorporé value .

let fruits = ["apple","banana","coconut"];

db.collection.aggregate([
    { "$project": { 
        "Element": { 
            "$filter": { 
                "input": "$Element", 
                "as": "el", 
                "cond": { 
                    "$setIsSubset": [ [ "$$el.Value" ], fruits ] 
                 }
            }
        }
    }}
])

À partir de MongoDB 3.4*, vous pouvez utiliser le $in opérateur dans le $project scène.

db.collection.aggregate([
    { "$project": { 
        "Element": { 
            "$filter": { 
                "input": "$Element", 
                "as": "el", 
                "cond": { 
                    "$in": [ "$$el.Value", fruits ] 
                 }
            }
        }
    }}
])

* Version inédite de MongoDB au moment de la rédaction de cet article