Twoje identyfikatory stron internetowych to ciągi znaków, podczas gdy identyfikatory _id, których szukasz, to identyfikatory obiektów. Twoje znalezisko nie pasuje do żadnych wyników, ponieważ w tabeli wyników nie ma dokumentów, które mają wartości ObjectId dla elementu „webpageid”.
Moim zdaniem istnieją dwa rozwiązania.
- Można przechowywać identyfikatory obiektów zamiast ciągów dla
webpageid
element wresults
kolekcja. Wdrożenie tego jest oczywiście oparte na tym, jak te dokumenty trafiają do kolekcji. -
Możesz utworzyć zmienną ciągu ze zwróconego ObjectId w pętli do porównania. Na przykład
... 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) ...
Jeśli wybierzesz drugą opcję, być może będziesz musiał sprawdzić, dlaczego na początku webpageid
znajduje się wiodący cytat wartość drugiego dokumentu w results
kolekcja.
"webpageid" : "\"54960a916ecb16dc3c4880e8"
Wreszcie, nie wiem zbyt wiele o twoich wymaganiach, ale możesz przemyśleć MongoDB jako rozwiązanie. Wygląda na to, że tworzysz coś w rodzaju JOIN, do czego MongoDB nie zaprojektowano zbyt dobrze.