sql >> Database teknologi >  >> NoSQL >> MongoDB

Mongodb find virker ikke med Objectid

Dine webside-id'er er strenge, mens de _id'er, du søger med, er ObjectId'er. Dit fund matcher ingen resultater, fordi der ikke er nogen dokumenter i resultattabellen, som har ObjectId-værdier for "webpageid"-elementet.

Der er to løsninger, som jeg ser det.

  1. Du kan gemme ObjectId'er i stedet for strenge for webpageid element i results kollektion. Implementeringen af ​​dette er naturligvis baseret på, hvordan disse dokumenter kommer ind i samlingen.
  2. Du kan oprette en strengvariabel ud fra det returnerede ObjectId inden for løkken for at sammenligne i stedet. For eksempel,

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

Hvis du vælger den anden mulighed, skal du muligvis undersøge, hvorfor der er et førende citat i begyndelsen af ​​webpageid værdi for det andet dokument i results samling.

"webpageid" : "\"54960a916ecb16dc3c4880e8"
 

Til sidst ved jeg ikke meget om dine krav, men du vil måske genoverveje MongoDB som en løsning. Det ser ud til, at du opretter noget som en JOIN, hvilket er noget MongoDB ikke er designet til at håndtere særlig godt.




  1. Django serialisering til JSON fejl:'MetaDict' objekt har ingen attribut 'concrete_model'

  2. Find punkter i nærheden af ​​LineString i mongodb sorteret efter afstand

  3. Indsæt stor plade i mongodb ved hjælp af mongo-skal

  4. Hvordan kan jeg få datahenvisning fra en samling til en anden? Mongodb