sql >> Database >  >> NoSQL >> MongoDB

Verkrijg array-subset in mongodb met behulp van een arraybron

Je hoeft alleen maar te $filter de array en bewaar alleen dat subdocument waar de waarde is een subset van uw invoerarray. Merk op dat waarde hier is een elementarray waarbij element het ingesloten veld is value .

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

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

Vanaf MongoDB 3.4* kunt u de $in . gebruiken operator in het $project podium.

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

*Niet-uitgebrachte versie van MongoDB op het moment van schrijven




  1. HDFS Disk Balancer Introductie, bewerkingen en functies

  2. Redis sub/pub en php/nodejs

  3. How-to:gebruik de HBase Thrift-interface, deel 1

  4. Aangepaste object-ID maken in MongoDB