MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Consulta recursiva do Mongodb


Você pode tentar a agregação abaixo.

Estágios $match - $graphLookup - $project .

$reduce para escolher o primeiro elemento de cada um de $graphLookup nameList's na variedade.
db.taxon.aggregate([{
    $match: {
        _id: {
            $in: listId
        }
    }
}, {
    $graphLookup: {
        from: "taxon",
        startWith: "$_id",
        connectFromField: "pa",
        connectToField: "_id",
        as: "nameList"
    }
}, {
    $project: {
        nameList: {
            $reduce: {
                input: "$nameList",
                initialValue: [],
                in: {
                    "$concatArrays": ["$$value", {
                        $slice: ["$$this.na", 1]
                    }]
                }
            }
        }
    }
}])