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

Tối ưu hóa tham gia truy vấn Mongodb

Tôi nghĩ bạn muốn làm một cái gì đó như thế này. Tôi đã không kiểm tra truy vấn này, nhưng đây là những gì tôi sẽ thử ở vị trí của bạn. Điều này chỉ có thể thực hiện được trên 3.6 mongodb, vì nó hỗ trợ nhiều phép nối. Ý tưởng là tham gia cả 3 bộ sưu tập. Tham gia đầu tiên là Cha mẹ và Người theo id Cha mẹ và Người "cha mẹId". Tham gia thứ hai là Cha mẹ và Ông bà. Sau đó, bạn lọc ra theo tên ông bà và bạn sẽ nhận được một tài liệu có chứa ông bà đó, con trai của ông ấy (cha mẹ) và cháu trai của ông ấy (người). Sau đó, bạn chỉ cần chiếu người đó.

    db.Parents.aggregate([
       {
          $lookup:{
             from:"Person",
             localField:"_id",
             foreignField:"parentId",
             as:"Person"
          }
       },
       {
          $unwind:"$Person"
       },
       {
          $lookup:{
             from:"Grandparents",
             localField:"grandparentId",
             foreignField:"_id",
             as:"Grandparents"
          }
       },
       {
          $unwind:"$Grandparents"
       },
       {$match:{Grandparents.name:"x"}},
       {$project:{Person.name:1,Person._id:1}}
}])

Tôi nghĩ điều này sẽ thành công




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bắt đầu với PHP và MongoDB

  2. $ unionWith - Tương đương của MongoDB với UNION ALL

  3. Tạo Mongo ObjectId (_id) với thời gian tùy chỉnh?

  4. MongoDB:Thứ tự chỉ mục và thứ tự truy vấn phải khớp nhau?

  5. Cách chèn nhiều mục cùng lúc trong bộ sưu tập MongoDB