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

Mongodb nie może przeszukiwać dokumentu podrzędnego według identyfikatora (zwraca wartość null)

Nie pytasz o identyfikator obiektu, bez względu na to, jak bardzo myślisz, że jesteś. Pytasz o identyfikator ObjectId zakodowany jako ciąg szesnastkowy, który nie to samo. Prawidłowo zapisz typ, a prawdopodobnie odniesiesz znacznie większy sukces.

Edytowane w celu opracowania, z powłoki REPL mongo (JS):

> // Omitting the _id, or generating a new one, are equivalent during insert.
> db.foo.insert({_id: ObjectId()})
WriteResult({ "nInserted" : 1 })

> db.foo.find()  // As expected, we get back our _real_ ObjectId value.
{ "_id" : ObjectId("5c9cfab873724727778c0730") }

> // Can we "insert the record again" using a string version of the ID?
> db.foo.insert({_id: "5c9cfab873724727778c0730"})
WriteResult({ "nInserted" : 1 })  // Sure as heck can! No unique violation!

> db.foo.find()  // Because THESE ARE NOT THE SAME
{ "_id" : ObjectId("5c9cfab873724727778c0730") }
{ "_id" : "5c9cfab873724727778c0730" }

Po naszej dyskusji na IRC wydaje się, że trudno jest zrozumieć „wyszukiwalne terminy” w udzielanych odpowiedziach. Wyszukaj tutaj na StackOverflow (lub Google lub DDG) „mongoose typecast ObjectId” (bez cudzysłowów lub po prostu „mongoose ObjectId”…), a znajdziesz wiele odpowiedzi, ponieważ jest to szczególnie powszechny problem dla użytkowników Mongoose.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDb 2.6.1 Błąd:17444 — Starszy punkt jest poza zakresem zapytania sferycznego

  2. MongoDB Wewnętrzna implementacja indeksowania?

  3. Jaki jest najbardziej dojrzały sterownik MongoDB dla C#?

  4. Czy można zamienić mongo ObjectId na ciąg i używać go do adresów URL?

  5. struktura folderów dla stosu MEAN