sql >> Database >  >> NoSQL >> MongoDB

Recursief zoeken op een collectie in MongoDB

Vanaf MongoDB 3.4 kunnen we dit doen met het Aggregation Framework.

De eerste en belangrijkste fase in onze pijplijn is de $graphLookup fase. $graphLookup stelt ons in staat recursief te matchen op het "ouder" en "naam" veld. Als resultaat krijgen we de voorouders van elke "naam".

De volgende fase in de pijplijn is de $match fase waarin we eenvoudig de "naam" selecteren waarin we geïnteresseerd zijn.

De laatste fase is de $addFields of $project fase waarin we een uitdrukking toepassen op de array "ancestors" met behulp van de $map array-operator.

Natuurlijk met de $reverseArray operator we draaien onze array om om het verwachte resultaat te krijgen.

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. findAndModify Fout in mongodb - nodejs - foutcode 17287

  2. Het dupliceren van PostgreSQL's vensterfuncties zoals lag, lead, over

  3. Hoe LIKE-query te laten werken in MongoDB?

  4. Spring Session Data Redis - Krijg geldige sessies, huidige gebruiker van Redis Store