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

mangusta znajdź dokument według właściwości odniesienia

W Twojej couple modelka, person1 jest ObjectID (wiem, że go znasz), więc nie ma oczywiście żadnej właściwości .firstname .

Właściwie najlepszym sposobem na osiągnięcie tego jest znalezienie użytkownika według jego imienia, a następnie zapytanie pary za pomocą id użytkownika.

Ta metoda może/powinna znaleźć się w couple model jako metoda statyczna (uproszczony przykład kodu):

couple.statics.findByPersonFirstname = function (firstname, callback) {
  var query = this.findOne()
 
  Person.findOne({firstname: firstname}, function (error, person) {
    query.where($or: [
      {person1: person._id},
      {person1: person._id}
    ]).exec(callback);
  })

  return query
}

Po prostu jak ten przykład .

EDYCJA:Zauważ również, że ref musi być _id (więc nie możesz przechowywać z imieniem, i tak byłby to zły pomysł).

Rozważając edycję:

Person._id może być String a odniesienie to ObjectId , jeśli tak, spróbuj:

{person1: mongoose.Types.ObjectId(Person._id)}

Twoja zmienna to person a nie Person . Spróbuj zalogować person aby zobaczyć, czy coś otrzymasz.

Wreszcie, mój przykładowy kod jest naprawdę prosty, nie zapomnij poradzić sobie z błędami i wszystkim (patrz link, który podałem powyżej, który jest kompletny).




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Wstępnie skompilowane zasoby Heroku nie powiodły się

  2. mangusta findById przy użyciu asynchronicznego oczekiwania

  3. jak wykonać polecenie administratora mongo z java

  4. Odwróć pole tablicy w MongoDB

  5. Grupa MongoDB według funkcjonalności