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

Truy vấn MongoDB để chỉ trả về tài liệu nhúng

Tôi nghĩ những gì bạn muốn là cái này:

print db.dvds.aggregate([
  {"$unwind": "$episodes"}, # One document per episode
  {"$match": {"episodes.title": "Episode 1"} }, # Selects (filters)
  {"$group": {"_id": "$_id", # Put documents together again
              "episodes": {"$push": "$episodes"},
              "title": {"$first": "$title"} # Just take any title
             }
  },
])["result"]

Đầu ra (ngoài khoảng trắng) là:

[ { u'episodes': [ { u'title': u'Episode 1',
                     u'desc': u'...'
                   }
                 ],
    u'_id': ObjectId('51542645a0c6dc4da77a65b6'),
    u'title': u'The Hitchhikers Guide to the Galaxy'
  }
]

Nếu bạn muốn thoát khỏi u"_id" , nối thêm đường dẫn với:

  {"$project": {"_id": 0,
                "episodes": "$episodes",
                "title": "$title"}
               }


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Quy mô liền mạch cho máy chủ MongoDB của bạn

  2. MongoDB không thể khởi động máy chủ:Công cụ lưu trữ mặc định 'wiredTiger' không khả dụng với bản xây dựng mongod này

  3. MongoDB aggreagte lấp đầy những ngày còn thiếu

  4. Làm thế nào để chuyển đổi một chuỗi thành ObjectId trong trình điều khiển gốc nodejs mongodb?

  5. mongoengine - Truy vấn trên ListField của EmbeddedDocumentField