sql >> Database teknologi >  >> NoSQL >> MongoDB

Hent array-undersæt i mongodb ved hjælp af en array-kilde

Du skal blot $filter arrayet og behold kun de underdokumenter, hvor værdien er en delmængde af dit input-array. Bemærk, at værdi her er et elementarray, hvor element er det indlejrede felt value .

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

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

Fra MongoDB 3.4* kan du bruge $in operatør i $project scene.

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

*Uudgivet version af MongoDB i skrivende stund




  1. NoSQL (MongoDB) vs Lucene (eller Solr) som din database

  2. Automatiser databasesundhedstjek

  3. MongoDB Whitespace-tegn

  4. Revisionslogning for MongoDB