MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

mangusto encontrar um documento por propriedade de referência


No seu couple modelo, person1 é um ObjectID (eu sei que você sabe disso), então obviamente não tem nenhuma propriedade .firstname .

Na verdade, a melhor maneira de conseguir isso é encontrar o usuário pelo primeiro nome e, em seguida, consultar o casal, com o id do usuário.

Este método pode/deve estar no couple model como um método estático (amostra de código simplificada):
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
}

Apenas curta este exemplo .

EDIT:Observe também que o ref deve ser o _id (então você não poderia armazenar com o primeiro nome, isso seria uma má ideia de qualquer maneira).

Considerando sua edição:


Person._id talvez seja uma String e a referência é um ObjectId , se sim, tente:
{person1: mongoose.Types.ObjectId(Person._id)}

Além disso, sua variável é person e não Person . Tente registrar person para ver se você consegue alguma coisa.

Por fim, meu exemplo de código é bem simples, não se esqueça de lidar com erros e tudo mais (veja o link que dei acima, que está completo).