MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

MongoAlchemy прави заявки за вградени документи

Mongo не поддържа връщане на поддокументи. Можете да използвате $elemMatch за филтриране, така че да се връщат само документи със съответстващи атрибути, но ще трябва сами да вземете коментарите. Можете леко да оптимизирате, като върнете само полето за коментари, както следва:

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

Обърнете внимание, че имаше грешка с това до 0.14.3 (която току-що пуснах преди няколко минути), което щеше да доведе до неработенето на results.comments.

Друга много важна забележка е, че elem_match, който правя там, връща само първия съвпадащ елемент. Ако искате всички съответстващи елементи, трябва сами да ги филтрирате:

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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Извличане на индекс на елемент в масив в MongoDB

  2. Настройка на MongoDB 2.6 Index, заявка с помощта на $or, $in, с ограничение и сортиране

  3. Подреждане и таблично (уникално/броене) в Mongo

  4. Можете ли да използвате заявки за намиране на GridFS с помощта на API на javascript?

  5. Spring-Mongo-Data Update позволява само един позиционен аргумент?