MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Mongodb find nie działa z Objectid

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.

  1. Można przechowywać identyfikatory obiektów zamiast ciągów dla webpageid element w results kolekcja. Wdrożenie tego jest oczywiście oparte na tym, jak te dokumenty trafiają do kolekcji.
  2. 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.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak serializować ObjectId do JSON?

  2. 3 sposoby sortowania dokumentów w MongoDB

  3. Nie można połączyć się z MongoDb (przy użyciu uwierzytelniania) przy użyciu mongocsharpdriver 2.7.0

  4. dlaczego używa się ORM z NoSql (jak MongoDB)

  5. Symbol wieloznaczny w notacji Mongodb z kropką?