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

Rufen Sie eine Array-Teilmenge in Mongodb mithilfe einer Array-Quelle ab

Sie müssen nur $filter das Array und behalten nur die Unterdokumente, in denen der Wert steht ist eine Teilmenge Ihres Eingabearrays. Beachten Sie diesen Wert hier ist ein Elementarray, wobei element das eingebettete Feld value ist .

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

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

Ab MongoDB 3.4* können Sie den $in verwenden -Operator im $project Stufe.

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

*Unveröffentlichte Version von MongoDB zum Zeitpunkt des Schreibens dieses Artikels