MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Рекурсивно търсене на колекция в MongoDB

Започвайки от MongoDB 3.4, можем да направим това с Aggregation Framework.

Първият и най-важен етап в нашия процес е $graphLookup сцена. $graphLookup позволява рекурсивно съпоставяне на полето "родител" и "име". Като резултат получаваме предците на всяко "име".

Следващият етап в процеса е $match етап, където просто избираме „името“, което ни интересува.

Последният етап е $addFields или $project етап, където прилагаме израз към масива "предци", използвайки $map оператор за масив.

Разбира се с $reverseArray оператор ние обръщаме нашия масив за да получите очаквания резултат.

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. Дължина на ID на колекцията в MongoDB

  2. E:Не може да се намери пакет mongodb-org

  3. Как правите SQL Like оператор в mongoDB, като използвате официалния C# драйвер

  4. Mongodb .net async чака

  5. Как да поддържам MongoDB - данни на работещ Docker контейнер в ново изображение?