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

Mongodb:dapatkan hanya daun pohon

Jika Anda menambahkan bidang parent untuk menangkap induk untuk setiap node, mungkin membantu untuk mengoptimalkan kueri pada kumpulan data yang lebih besar. Misalnya:

{"parent": "", "node": "#a"}
{"parent": "#a", "node": "#a#b"}
{"parent": "#a", "node": "#a#c"}
{"parent": "#a#b", "node": "#a#b#1"}
{"parent": "#a#b", "node": "#a#b#2"}
{"parent": "#a#c", "node": "#a#c#1"}
{"parent": "#a#c#1", "node": "#a#c#1#x"}

Kemudian Anda dapat menggunakan $graphLookup (agregasi) operator untuk dilalui.

Alternatif untuk kueri regex Anda untuk mendapatkan semua anak dari simpul pohon untuk #a#c :

db.tree.aggregate([
        {$match:{"node":"#a#c"}}, 
        {$graphLookup:{
                       from:"tree", 
                       startWith:"$node", 
                       connectFromField:"node", 
                       connectToField:"parent", 
                       as:"dep"}}, 
        {$project:{"dep.node":1, "_id":0}}
])

Temukan hanya daun #a#c :

db.tree.aggregate([
        {$match:{"parent": {$regex:"^#a#c"}}}, 
        {$graphLookup:{
                       from:"tree", 
                       startWith:"$node", 
                       connectFromField:"node", 
                       connectToField:"parent", 
                       as:"dep"}}, 
        {$match:{dep:[]}}, 
        {$project:{"_id":0, node:1}}
])

Saya juga merekomendasikan untuk meninjau Struktur Pohon Model , ada berbagai cara untuk menggunakan struktur data pohon di MongoDB. Bergantung pada kasus penggunaan Anda, Anda harus menggunakan struktur tertentu untuk manfaat kueri aplikasi Anda.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Impor data csv sebagai array di mongodb menggunakan mongoimport

  2. MongoDB $sort

  3. Mengapa petunjuk Mongo membuat kueri berjalan hingga 10 kali lebih cepat?

  4. Bagaimana MongoDB Memilih Paket Kandidat

  5. Statistik waktu nyata:MySQL (/ Gerimis) atau MongoDB?