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

Trường chọn Mongodb để trả về tài liệu được nhúng trong mảng

Có, nhưng không phải theo cách bạn muốn. Nếu bạn làm như sau, bạn sẽ chỉ nhận lại phần tử đầu tiên của mảng:

coll.find({_id:'2'}, { 'objects.0': 1})

Tuy nhiên, những gì bạn thực sự muốn là một cái gì đó giống như sau:

coll.find({_id:'2', 'objects._id': '3'}, { 'objects.$' : 1})

Tất nhiên, điều đó không thực sự hoạt động trong MongoDB.

Xem xét câu hỏi khác của bạn , đây là một trong những lý do để sử dụng "đối tượng nhúng" thay vì "mảng đối tượng". Với "đối tượng được nhúng", bạn có thể làm như sau:

coll.find({_id:'2'}, {'objects.3': 1}) // where 3 is the id of the third object

Điều này cho phép bạn chỉ chọn "đối tượng nhúng" mà bạn cần.

Vấn đề với MongoDB là tài liệu mẹ luôn luôn tìm nạp. Truy vấn trả về tài liệu cấp cao nhất. Điều này được nướng vào toàn bộ kiến ​​trúc. Ngay cả khi bạn yêu cầu chỉ một phần của tài liệu, máy chủ vẫn phải tải toàn bộ tài liệu vào bộ nhớ trước khi gửi cho bạn phần được yêu cầu.

Cách duy nhất để giải quyết vấn đề này có thể là Khung tổng hợp mới , nhưng đó chưa phải là nhánh ổn định.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Chuyển đổi .NET Guid sang MongoDB ObjectID

  2. Sửa lỗi "$ pullAll yêu cầu một đối số mảng nhưng đã được cung cấp một đôi" trong MongoDB

  3. Nhóm các giá trị và số lượng riêng biệt cho từng thuộc tính trong một truy vấn

  4. Làm cách nào để kiểm tra xem một trường mảng có phải là một phần của một mảng khác trong MongoDB hay không?

  5. Mongoose hết hạn tài sản không hoạt động bình thường