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

Pencarian rekursif pada koleksi di MongoDB

Mulai dari MongoDB 3.4, kita dapat melakukannya dengan Kerangka Agregasi.

Tahap pertama dan terpenting dalam alur kami adalah $graphLookup panggung. $graphLookup memungkinkan kita untuk mencocokkan secara rekursif pada bidang "induk" dan "nama". Hasilnya, kami mendapatkan nenek moyang dari setiap "nama".

Tahap berikutnya dalam pipeline adalah $match tahap di mana kita cukup memilih "nama" yang kita minati.

Tahap terakhir adalah $addFields atau $project tahap di mana kita menerapkan ekspresi ke larik "leluhur" menggunakan $map operator larik.

Tentu saja dengan $reverseArray operator kami membalikkan array kami agar mendapatkan hasil yang diharapkan.

db.collection.aggregate(
    [ 
        { "$graphLookup": { 
            "from": "collection", 
            "startWith": "$parent", 
            "connectFromField": "parent", 
            "connectToField": "name", 
            "as": "ancestors"
        }}, 
        { "$match": { "name": "D" } }, 
        { "$addFields": { 
            "ancestors": { 
                "$reverseArray": { 
                    "$map": { 
                        "input": "$ancestors", 
                        "as": "t", 
                        "in": { "name": "$$t.name" }
                    } 
                } 
            }
        }}
    ]
)


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Sesi muat ekspres dari Mongo dengan session_id

  2. Spring JPA PostgreSQL + MongoDB

  3. Apakah findOne luwak pada model mengembalikan janji?

  4. Bagaimana saya bisa terhubung ke MongoDB Atlas menggunakan Robomongo?

  5. MongoDB:Menyalin array ke array lain dalam dokumen yang sama