Във вашата couple модел, person1 е ObjectID (знам, че го знаете), така че няма очевидно никакво свойство .firstname .
Всъщност най-добрият начин да постигнете това е да намерите потребителя по неговото първо име и след това да направите запитване към двойката с id на потребителя.
Този метод може/трябва да стои в couple модел като статичен метод (опростен примерен код):
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
}
Просто харесайте този пример .
РЕДАКТИРАНЕ:Също така имайте предвид, че реф трябва да бъде _id (така че не можете да съхранявате с първото име, това така или иначе би било лоша идея).
Вземайки предвид вашата редакция:
Person._id е може би String и препратката е ObjectId , ако е така, опитайте:
{person1: mongoose.Types.ObjectId(Person._id)}
Освен това вашата променлива е person а не Person . Опитайте се да регистрирате person за да видите дали ще получите нещо.
И накрая, моят примерен код е наистина прост, не забравяйте да обработвате грешки и всичко останало (вижте връзката, която ви дадох по-горе, която е пълна).