MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

mangouste trouver un document par propriété de référence

Dans votre couple modèle, person1 est un ObjectID (je sais que vous le connaissez), donc il n'a évidemment pas de propriété .firstname .

En fait, la meilleure façon d'y parvenir est de trouver l'utilisateur par son prénom, puis d'interroger le couple, avec l'id de l'utilisateur.

Cette méthode pourrait/devrait être dans le couple modèle en tant que méthode statique (exemple de code simplifié) :

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
}

Juste comme cet exemple .

EDIT :Notez également que la référence doit être le _id (donc vous ne pourriez pas stocker avec le prénom, ce serait de toute façon une mauvaise idée).

Compte tenu de votre modification :

Person._id est peut-être une String et la référence est un ObjectId , si oui, essayez :

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

De plus, votre variable est person et non Person . Essayez de connecter person pour voir si vous obtenez quelque chose.

Enfin, mon exemple de code est vraiment simple, n'oubliez pas de gérer les erreurs et tout (voir le lien que je vous ai donné plus haut, qui est complet).