sql >> Database >  >> NoSQL >> MongoDB

MongoDB - Vind documenten die aan een bepaalde voorwaarde voldoen voor onbekende veldsleutels

U moet beginnen met $objectToArray om uw sleutels dynamisch te lezen. Dan kun je $map eigenschappen samen met $anyElementTrue om te detecteren of er een genest veld is in thing met {"attribute1":"typeC"} :

db.collection.aggregate([
    {
        $match: {
            $expr: {
                $anyElementTrue: {
                    $map: {
                        input: { $objectToArray: "$thing" },
                        in: { $eq: [ "$$this.v.attribute1", "typeC" ] }                         
                    }
                }
            }
        }
    }
])

Mongo-speeltuin



  1. Hoe een genest object te verwijderen op basis van zijn ObjectId?

  2. Mongo werkt niet meer na upgrade

  3. Mongodb:meerdere collecties of één grote collectie met index

  4. Mongoose/mongoDB-query voegt zich bij ... maar ik kom uit een sql-achtergrond