sql >> Database >  >> NoSQL >> MongoDB

Mongodb-zoekopdracht werkt niet met de Objectid

Uw webpagina-id's zijn strings, terwijl de _id's waarmee u zoekt ObjectIds zijn. Uw vondst komt niet overeen met de resultaten omdat er geen documenten in de resultatentabel zijn die ObjectId-waarden hebben voor het element "webpageid".

Er zijn twee oplossingen zoals ik het zie.

  1. U zou ObjectIds kunnen opslaan in plaats van strings voor de webpageid element in de results verzameling. De implementatie hiervan is natuurlijk gebaseerd op hoe die documenten in de collectie komen.
  2. U kunt een tekenreeksvariabele maken van de geretourneerde ObjectId in de lus om in plaats daarvan te vergelijken. Bijvoorbeeld,

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

Als je voor de tweede optie kiest, moet je misschien onderzoeken waarom er een leidende aanhalingstekens staan ​​aan het begin van de webpageid waarde voor het tweede document in de results collectie.

"webpageid" : "\"54960a916ecb16dc3c4880e8"

Ten slotte weet ik niet veel over uw vereisten, maar misschien wilt u MongoDB heroverwegen als een oplossing. Het lijkt erop dat je zoiets als een JOIN aan het maken bent, iets waar MongoDB niet goed mee om kan gaan.




  1. MongoDB Hoe een query uit te voeren met de $date-operator?

  2. Kan mongo's niet starten

  3. Verbeteringen in MongoDB 2.6 Aggregation Framework

  4. StackExchange Redis ChannelPrefix Geen bereiksleutels