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

MongoDB $graphLookup pobiera dzieci na wszystkich poziomach głęboko - wynik zagnieżdżony

Niestety nie można uzyskać pełnej głębi w formacie zagnieżdżonym. Korzystanie z widoku to obejście, które pozwala wykonać tę operację, ale musiałbyś utworzyć nowy widok dla każdego poziomu osadzania, którego potrzebujesz. Zamiast tego rozważyłbym wykonanie graphLookup bez podawania głębokości, zaczynając od poziomu głównego, pobranie całej hierarchii w jednym zapytaniu, przed obliczeniem drzewa na poziomie aplikacji.

Wyglądałoby to mniej więcej tak:

db.node.aggregate([
    { $match: {
        parentId: null
    }},
    { $graphLookup: {
        from: "node",
        startWith: "$nodeId",
        connectFromField: "nodeId",
        connectToField: "parentId",
        depthField: "depth",
        as: "children"
    }}
]);

Powinno to pozwolić na pobranie całej hierarchii za jednym razem, więc następnie musisz obliczyć drzewo w swojej aplikacji na podstawie informacji, które będziesz miał w tablicy "dzieci".



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongoose odmawia rzucenia prawidłowego ciągu na ObjectId

  2. Jak zaimplementować tę operację zapytania i aktualizacji mongodb (sterownik CSharp)?

  3. Często zadawane pytania dotyczące wywiadu MongoDB

  4. Mongo usuwa duplikaty w tablicy obiektów na podstawie pola

  5. Jak wybrać jedno pole dla wszystkich dokumentów w kolekcji MongoDB?