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

Tìm cách trả lại tài liệu từ một bộ sưu tập khác dựa trên một bộ từ một bộ sưu tập khác, MongoDB

Tương tự như "tham gia" trong sql, trong Mongo, bạn phải sử dụng "tra cứu".

Để sử dụng tra cứu, bạn phải sử dụng truy vấn "tổng hợp",

Vì vậy, truy vấn mà bạn cần là,

db.collection('users').aggregate({$match:{ email: 'example_email' }},
    {$unwind:{path:"$sensors"}},
    {$lookup:{from:"sensor", localField: "sensors", foreignField:"sensorId", as:"sensorDetails"}},
(err, userData)=>{
      console.log(userData);
})

Vậy truy vấn này đang làm gì,

xem dòng "$ lookup" ---> từ bộ sưu tập "người dùng", nó đang sử dụng trường "cảm biến" (trường cục bộ cho bộ sưu tập người dùng của bạn như id chính trong sql) và tìm nạp thông tin từ bộ sưu tập "cảm biến" khớp với sensorId (nước ngoài trong bộ sưu tập cảm biến) và lưu trữ kết quả trong trường "sensorDetails".

bạn có thể có quyền truy cập vào sensorDetails bằng "userData [0] .sensorDetails" .sensorDetails sẽ là mảng.

Kiểm tra tài liệu chính thức về tra cứu Cũng đọc về thư giãn



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongoose - gây ra bởi ::11000 E11000 chỉ số lỗi chính trùng lặp?

  2. Cách thực hiện kiểm tra cơ sở dữ liệu thích hợp (TDD) trên Rails 3 bằng MongoDB và Mongoid

  3. Sử dụng Jade để lặp lại JSON

  4. Làm cách nào để truy xuất thời gian cập nhật cuối cùng của mỗi tài liệu trong MongoDB?

  5. 2 cách để có được kích thước tài liệu trong MongoDB