2013-07-08 29 views
10
db.History.find({'_file.project': 'someproject') 
     .populate('_file', 'name reference project') 
     .sort(sortField || '-created') 
     .limit(max || 64) 
     .exec(this); 

Ở đây tôi đang cố tìm tất cả các tài liệu khớp với trường được điền từ tham chiếu _file. Có vẻ như không hoạt động. Là một cái gì đó như thế này có thể ở tất cả?Mongoose truy vấn một trường được điền vào

Tôi có thể sao chép trường dự án vào đối tượng này, như một cách giải quyết chỉ để truy vấn nhưng tôi không muốn tất nhiên.

Trả lời

9

Không, tham số điều kiện của truy vấn find chỉ có thể tham chiếu bộ sưu tập đang được truy vấn.

populate không tham gia, nó chỉ là một chức năng thuận tiện để theo dõi truy vấn chính với các truy vấn bổ sung để lấy dữ liệu liên quan từ các bộ sưu tập khác.

+0

Cảm ơn. Vì vậy, để chắc chắn, để truy vấn bộ sưu tập Lịch sử dựa trên dự án, tôi sẽ phải thêm trường dự án, sao chép nó từ mô hình Tệp? Việc truy xuất tất cả tài liệu và sau đó lọc không phải là một tùy chọn vì bộ sưu tập Lịch sử có thể rất lớn. –

+1

@ 0x80 Phải, hoặc nhận tất cả các tài liệu 'Tệp' với' dự án phù hợp' và sau đó sử dụng truy vấn '$ in' đối với' History' bằng cách sử dụng các giá trị '_id' từ truy vấn đầu tiên. – JohnnyHK

+0

Tôi nhận được ngay bây giờ. Thật tốt khi biết có hai lựa chọn. Cảm ơn! –

Các vấn đề liên quan