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

Mongodb find không hoạt động với Objectid

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.

  1. Bạn có thể lưu trữ các ObjectIds thay vì các chuỗi cho webpageid phần tử trong results 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.
  2. 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.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Tại sao MongoDB không sử dụng fsync ()?

  2. Chiến lược cho Tổng hợp thời gian thực trong MongoDB

  3. Làm cách nào để kết nối từ xa với MongoDB trong máy chủ của tôi bằng java?

  4. truy vấn trả về số lượng các mục trong bộ sưu tập được nhúng mongodb

  5. MongoDB, xóa đối tượng khỏi mảng