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

Truy vấn đệ quy?

Câu hỏi về lược đồ nào sẽ phù hợp nhất với loại mẫu truy cập mà bạn mô tả đã được trả lời trong một số ví dụ nói về cách biểu diễn hệ thống phân cấp trong cơ sở dữ liệu MongoDB / document.

Một câu trả lời phổ biến phù hợp với nhiều truy vấn khác nhau là nơi bạn lưu trữ trong mỗi tệp tên, kích thước, tệp cha trực tiếp và mảng của tất cả các tổ tiên của tệp đó.

Điều đó sẽ làm cho dữ liệu mẫu của bạn:

db.files.save({ _id: "root"})
db.files.save({ _id: "src", parent: "root", ancestors: ["root"] } )
db.files.save({ _id: "lib", parent: "root", ancestors: ["root"]} )
db.files.save({ _id: "config.cfg", parent: "root", ancestors: ["root"], size: 2310 })
db.files.save({ _id: "file1.js", parent: "src", ancestors: ["root","src"], size: 5039 })
db.files.save({ _id: "file2.js", parent: "src", ancestors: ["root","src"], size: 1299 })

Bây giờ nếu bạn muốn truy vấn những thứ như "Các tệp trong thư mục này" hoặc "tất cả các tệp trong thư mục này (bao gồm cả đệ quy)", bạn truy vấn:

db.files.find( { parent: "root" } )    // all files in /src directory
db.files.find( {ancestors: "root"} )   // all files under /root directory tree

Vì bạn cần sử dụng khung tổng hợp để lấy những thứ như tổng, truy vấn về kích thước của thư mục sẽ là:

db.files.aggregate([
       {$match:{ancestors:"src"}}, 
       {$group:{
           _id:   "src",
           total_size:  {$sum:"$size"}
          }
       }
]);

Để xem kích thước của tất cả các thư mục trong thư mục gốc, nó sẽ là:

db.files.aggregate([
       {$match:{ancestors:"root"}}, 
       {$group:{
           _id:   "root",
           total_size:  {$sum:"$size"}
          }
       }
]);



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cách lưu trữ trường Ngày dưới dạng ISODate () bằng jackson trong MongoDb

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

  3. chỉ mục mongoose đã tồn tại với các tùy chọn khác nhau

  4. Làm cách nào để nối các mảng từ nhiều tài liệu trong MongoDB?

  5. cập nhật javascript mongodb