MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Tài liệu nhúng truy vấn MongoAlchemy

Mongo không hỗ trợ trả lại tài liệu phụ. Bạn có thể sử dụng $ elemMatch để lọc sao cho chỉ các tài liệu có thuộc tính phù hợp mới được trả về, nhưng bạn sẽ phải tự lấy các nhận xét. Bạn có thể tối ưu hóa một chút bằng cách chỉ trả lại trường nhận xét như sau:

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

Lưu ý rằng có một lỗi xảy ra với điều này cho đến 0.14.3 (mà tôi vừa phát hành cách đây vài phút), điều này có thể khiến results.comments không hoạt động.

Một lưu ý rất quan trọng khác là elem_match mà tôi đang thực hiện ở đó chỉ trả về phần tử phù hợp đầu tiên. Nếu bạn muốn tất cả các phần tử phù hợp, bạn phải tự lọc chúng:

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. Truy vấn MongoDB từ trình duyệt bằng chương trình phụ trợ bình

  2. Tệp nhật ký của mongodb trong mac ở đâu

  3. Tạo Mongo ObjectId (_id) với thời gian tùy chỉnh?

  4. Cách xóa tài liệu MongoDB bằng cách nhập tệp

  5. Làm thế nào để tự động loại bỏ các truy vấn MongoDB chậm?