Các trang web của bạn là các chuỗi trong khi các _id mà bạn đang tìm kiếm là các ObjectIds. Tìm thấy của bạn không khớp với bất kỳ kết quả nào vì không có tài liệu nào trong bảng kết quả có giá trị ObjectId cho phần tử "webpageid".
Có hai giải pháp như tôi thấy.
- Bạn có thể lưu trữ các ObjectIds thay vì các chuỗi cho
webpageid
phần tử trongresults
thu thập. Tất nhiên, việc triển khai điều này dựa trên cách những tài liệu đó được đưa vào bộ sưu tập. -
Bạn có thể tạo biến chuỗi từ ObjectId trong vòng lặp để so sánh thay thế. Ví dụ:
... for(var i = 0; i < docs.length; i++) { var docId = docs[i]._id.toString(); // create a string db.get('results').findOne({'webpageid':docId}, function(err, doc) ...
Nếu bạn chọn tùy chọn thứ hai, bạn có thể cần phải xem lý do tại sao lại có câu trích dẫn ở đầu webpageid
giá trị cho tài liệu thứ hai trong results
bộ sưu tập.
"webpageid" : "\"54960a916ecb16dc3c4880e8"
Cuối cùng, tôi không biết nhiều về các yêu cầu của bạn, nhưng bạn có thể muốn xem xét lại MongoDB như một giải pháp. Có vẻ như bạn đang tạo thứ gì đó giống như JOIN, đây là thứ mà MongoDB không được thiết kế để xử lý tốt.