MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

mongoose tìm một tài liệu theo thuộc tính tham chiếu

Trong couple của bạn người mẫu, person1 là một ObjectID (tôi biết bạn biết điều đó), vì vậy nó rõ ràng không có thuộc tính .firstname .

Trên thực tế, cách tốt nhất để đạt được điều này, là tìm người dùng theo tên của họ, sau đó truy vấn cặp đôi, với id của người dùng.

Phương thức này có thể / nên đứng trong cặp couple mô hình như một phương thức tĩnh (mẫu mã đơn giản hóa):

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
}

Chỉ cần thích ví dụ này .

CHỈNH SỬA:Cũng lưu ý rằng ref phải là _id (vì vậy bạn không thể lưu trữ với tên đầu tiên, đó sẽ là một ý tưởng tồi).

Xem xét chỉnh sửa của bạn:

Person._id có thể là một String và tham chiếu là một ObjectId , nếu vậy, hãy thử:

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

Ngoài ra, biến của bạn là person chứ không phải Person . Cố gắng ghi lại person để xem bạn có nhận được gì không.

Cuối cùng, mẫu mã của tôi thực sự rất đơn giản, đừng quên xử lý các lỗi và tất cả (xem liên kết tôi đã cung cấp cho bạn ở trên, đã hoàn thành).




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Không thể kết nối với MongoDB Atlas (queryTxt ETIMEOUT)

  2. Giảm hiệu suất nghiêm trọng với Luồng thay đổi MongoDB

  3. Làm cách nào để trả lại thứ tự Bài đăng trên MongoDB theo thời gian Được người dùng yêu thích?

  4. MongoDB Cách tốt nhất để ghép nối và xóa các mục nhập cơ sở dữ liệu tuần tự

  5. NodeJS / ExpressJS gửi phản hồi lượng lớn dữ liệu trong 1 luồng