sql >> Databasteknik >  >> NoSQL >> MongoDB

Få array-delmängd i mongodb med hjälp av en array-källa

Du behöver bara $filter arrayen och behåll endast de underdokument där värdet är en delmängd av din inmatningsmatris. Observera att värde här är en elementarray där element är det inbäddade fältet value .

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

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

Från MongoDB 3.4* kan du använda $in operatorn i $project skede.

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

*Outgiven version av MongoDB när detta skrivs




  1. Hur kör man en Redis-server OCH en annan applikation i Docker?

  2. MongoDB - Exportera data

  3. Rails anpassad miljö Resque.enqueue skapar inga jobb

  4. MongoDB $degreesToRadians