sql >> Databáze >  >> NoSQL >> MongoDB

MongoAlchemy dotazuje vložené dokumenty

Mongo nepodporuje vracení vnořených dokumentů. Můžete použít $elemMatch k filtrování tak, aby byly vráceny pouze dokumenty s odpovídajícími atributy, ale komentáře si budete muset chytit sami. Můžete mírně optimalizovat tím, že vrátíte pole pro komentáře následovně:

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

Všimněte si, že s tím byla chyba až do verze 0.14.3 (kterou jsem právě vydal před několika minutami), která by způsobila, že by results.comments nefungovaly.

Další velmi důležitá poznámka je, že elem_match, který tam dělám, vrací pouze první odpovídající prvek. Pokud chcete všechny odpovídající prvky, musíte je filtrovat sami:

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. MongoDB načte pouze odpovídající dílčí dokumenty z dokumentu s c#

  2. Jak lze reprezentovat pole MongoDB GeoJSON ve schématu Mongoose?

  3. Jak propojit Django Rest-api s MongoDB?

  4. Unit Test s Mongoose