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.