MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Obtenir un dictionnaire dans une liste par clé dans mongoDB (mongoengine)

Je ne connais pas MongoEngine, mais l'opérateur de projection $ peut filtrer un tableau pour afficher uniquement l'élément correspondant. Dans le shell Mongo :

> db.foo.insert({"items": [{"id": 1}, {"id": 2}, {"id": 3}]})
> db.foo.find({'items.id': 1}, {'items.$': true})
{ "_id" : ObjectId("51ce29b68b178484ff2a01ed"), "items" : [  {  "id" : 1 } ] }

Plus d'informations :http://docs.mongodb.org/manual/reference/projection /positionnel/

Il semble que dans MongoEngine vous fassiez :

Foo.objects(__raw__={'items.id': 1}).only('items.$')

Plus :http://mongoengine-odm.readthedocs .org/en/latest/guide/querying.html#raw-queries