MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Wählen Sie Dokumente aus, bei denen alle Werte in einem Array-Feld in einem anderen Array vorhanden sind

Sie können dies mit .aggregate() tun -Methode und $redact Operator. In Ihrem $cond Ausdrücke müssen Sie das $setIsSubset verwenden um zu überprüfen, ob alle Elemente im Array "products" in "productIds" enthalten sind. Das liegt daran, dass Sie $in nicht verwenden können im bedingten Ausdruck

var productIds = [139,72,73,1,6];
db.customers.aggregate([ 
    { "$redact": { 
        "$cond": [ 
            { "$setIsSubset": [ "$products", productIds ] },
            "$$KEEP",
            "$$PRUNE" 
        ] 
    }} 
])