sql >> Database >  >> NoSQL >> MongoDB

mangoest een document zoeken op referentie-eigenschap

In je couple model, person1 is een ObjectID (ik weet dat je het kent), dus het heeft geen duidelijk geen eigenschap .firstname .

De beste manier om dit te bereiken, is door de gebruiker op zijn voornaam te vinden en vervolgens het paar te ondervragen met de id van de gebruiker.

Deze methode kan/moet in het couple . staan model als een statische methode (vereenvoudigd codevoorbeeld):

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
}

Gewoon vind dit voorbeeld leuk .

EDIT:Merk ook op dat de ref de _id . moet zijn (dus je zou niet kunnen opslaan met de voornaam, dat zou sowieso een slecht idee zijn).

Rekening houdend met uw bewerking:

Person._id is misschien een String en de referentie is een ObjectId , zo ja, probeer dan:

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

Uw variabele is ook person en niet Person . Probeer person in te loggen om te zien of je iets krijgt.

Ten slotte is mijn codevoorbeeld heel eenvoudig, vergeet niet om fouten en al te verwerken (zie de link die ik je hierboven heb gegeven, die compleet is).




  1. Mongodb Mongoimport te groot:fout bij het parseren van fouten

  2. Zoek een locatie binnen een opgeslagen cirkel

  3. Meerdere zoekopdrachten uitvoeren in mongo`

  4. Bewaar referentieveld mongoengine