MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

mongoose намери документ по референтно свойство

Във вашата 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 за да видите дали ще получите нещо.

И накрая, моят примерен код е наистина прост, не забравяйте да обработвате грешки и всичко останало (вижте връзката, която ви дадох по-горе, която е пълна).




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да форматирате числа в SQL

  2. актуализацията на mongo db променя реда на обектните полета

  3. Попълнете полето за избор от колекция и филтрирайте според избраната стойност в meteor

  4. Актуализиране на полето в точен масив от елементи в MongoDB

  5. използва за времето за създаване на mongodb ObjectId