MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Permintaan rekursi?

Pertanyaan tentang skema apa yang paling sesuai dengan jenis pola akses yang Anda gambarkan dan dijawab dalam beberapa contoh berbicara tentang bagaimana merepresentasikan hierarki dalam database MongoDB/document.

Jawaban umum yang berfungsi untuk banyak kueri berbeda adalah tempat Anda menyimpan di setiap file nama, ukuran, induk langsung, dan larik semua leluhurnya.

Itu akan membuat data sampel Anda:

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 })

Sekarang jika Anda ingin menanyakan hal-hal seperti "File di direktori ini" atau "semua file di bawah direktori ini (termasuk secara rekursif)" Anda menanyakan:

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

Karena Anda perlu menggunakan kerangka kerja agregasi untuk mendapatkan hal-hal seperti jumlah, kueri untuk ukuran folder adalah:

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

Untuk melihat ukuran semua folder yang ada di folder root adalah:

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. Bagaimana melakukan Pencarian Teks Lengkap di MongoDB

  2. Bagaimana cara menghasilkan dokumen Mongodb secara rekursif menggunakan driver mongocxx c++?

  3. Kembalikan sejumlah catatan terbatas dari jenis tertentu, tetapi jumlah catatan lain yang tidak terbatas?

  4. ListCollections dengan autorizedcollection

  5. DropIndexes MongoDB()