sql >> Database >  >> NoSQL >> MongoDB

MongoAlchemy zoekt ingesloten documenten op

Mongo ondersteunt het retourneren van subdocumenten niet. U kunt $elemMatch gebruiken om te filteren, zodat alleen documenten met overeenkomende kenmerken worden geretourneerd, maar u moet zelf de opmerkingen pakken. U kunt enigszins optimaliseren door het opmerkingenveld alleen als volgt terug te sturen:

query = Book.query.filter({Book.comments:{'$elemMatch':{Comment.user_id:'user_c'}}})
query = query.fields(Book.comments.elem_match({Comment.user_id:'user_c'}))
result = query.limit(1).first()
print 'query result:', result.comments

Merk op dat er een bug was tot 0.14.3 (die ik net een paar minuten geleden uitbracht) waardoor results.comments niet zou werken.

Nog een zeer belangrijke opmerking is dat de elem_match die ik daar doe, alleen het eerste overeenkomende element retourneert. Als je alle overeenkomende elementen wilt, moet je ze zelf filteren:

query = Book.query.filter({Book.comments:{'$elemMatch':{Comment.user_id:'user_c'}}})
result = query.limit(1).first()
print 'query result:', [c for c in result.comments if c.user_id == 'user_c']



  1. Is het queryresultaat van Mongoose alleen-lezen?

  2. Hoe krijg ik alle overeenkomende items uit een reeks objecten in MongoDB?

  3. Hoe wordt de volgorde van eigenschappen bijgehouden voor sortering in mongodb?

  4. verschillende selecties in lithium