sql >> Base de Datos >  >> NoSQL >> MongoDB

mangosta encuentra un documento por propiedad de referencia

En tu couple modelo, person1 es un ObjectID (sé que lo sabe), por lo que obviamente no tiene ninguna propiedad .firstname .

En realidad, la mejor manera de lograr esto es encontrar al usuario por su nombre y luego consultar a la pareja, con el id del usuario.

Este método podría/debería estar en la couple modelo como método estático (ejemplo de código simplificado):

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
}

Solo Me gusta este ejemplo .

EDITAR:también tenga en cuenta que la referencia debe ser _id (así que no podría almacenar con el primer nombre, sería una mala idea de todos modos).

Teniendo en cuenta tu edición:

Person._id es quizás una String y la referencia es un ObjectId , si es así, intente:

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

Además, su variable es person y no Person . Intenta registrar a person a ver si te sale algo.

Finalmente, mi ejemplo de código es realmente simple, no olvides manejar los errores y todo (ver el enlace que te di arriba, que está completo).