MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Mongodb find не работи с Objectid

Вашите уебстраници са низове, докато _идентификаторите, с които търсите, са ObjectIds. Вашата находка не съответства на нито един резултат, защото в таблицата с резултати няма документи, които имат стойности на ObjectId за елемента "webpageid".

Според мен има две решения.

  1. Можете да съхранявате ObjectIds вместо низове за webpageid елемент в results колекция. Изпълнението на това, разбира се, се основава на това как тези документи попадат в колекцията.
  2. Можете да създадете низова променлива от върнатия ObjectId в рамките на цикъла, за да сравните вместо това. Например,

    ...
    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)
        ...
    

Ако изберете втората опция, може да се наложи да разгледате защо има водещ цитат в началото на webpageid стойност за втория документ в results колекция.

"webpageid" : "\"54960a916ecb16dc3c4880e8"

И накрая, не знам много за вашите изисквания, но може да искате да преосмислите MongoDB като решение. Изглежда, че създавате нещо като JOIN, което е нещо, което MongoDB не е предназначено да обработва много добре.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Връщане на масив от поддокументи чрез Meteor / Mongo

  2. Как да актуализирате обекти с множество масиви в mongodb

  3. Сортиране на резултатите от заявката по реда на елементите в предоставения масив с условия в Mongoose

  4. Mongo Aggregation:$group и $project масив за обект за преброяване

  5. как да инсталирам драйвери на mongodb за c++ в ubuntu?