MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Wyszukiwanie rekurencyjne w kolekcji w MongoDB

Począwszy od MongoDB 3.4, możemy to zrobić za pomocą agregacji Framework.

Pierwszym i najważniejszym etapem naszego potoku jest $graphLookup etap. $graphLookup pozwala nam na rekurencyjne dopasowanie w polu „rodzic” i „nazwa”. W rezultacie otrzymujemy przodków każdego „imiona”.

Następnym etapem w potoku jest $match etap, w którym po prostu wybieramy „nazwę”, która nas interesuje.

Ostatnim etapem jest $addFields lub $project etap, w którym stosujemy wyrażenie do tablicy „ancestors” za pomocą $map operator tablicowy.

Oczywiście z $reverseArray operator odwracamy naszą tablicę w celu uzyskania oczekiwanego rezultatu.

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. Dlaczego MongoDB nie może użyć indeksu złożonego, który jest bardzo podobny (nie dokładny) do zapytania?

  2. Dlaczego to polecenie msiexec.exe nie działa w powershell?

  3. MongoDB Mongoose wysyła zapytanie do głęboko zagnieżdżonej tablicy poddokumentów według zakresu dat

  4. Łączenie z zestawem replik MongoDB za pomocą rmongodb

  5. MongoDB :Usuń ostatnie dwa znaki z String