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

Mongodb-Abfrage für verschachtelte Array-Elemente

Da es keine Möglichkeit gibt zu sagen, welchen Treiber Sie verwenden, ist hier eine Shell-Lösung:

db.foo.find({
    "Asset.Metadata.Platforms.Platform": {
        $elemMatch: {
            "@name": VAR_PLATFORM,
            "PublishingRanges.PublishingRange": {
                $elemMatch: {
                    "@startdate": {$gt: VAR_START},
                    "@enddate": {$lt: VAR_END}
                }
            }
        }
    }  
})

Übrigens könnten Sie die Dokumentstruktur vereinfachen, indem Sie Platform weglassen und PublishingRange und Zuweisen von Arrays zu Platforms ein PublishingRanges bzw..