$graphLookup not starting from collection

XMLWordPrintableJSON

    • Type: Question
    • Resolution: Unresolved
    • Priority: Major - P3
    • None
    • Affects Version/s: 3.4.14, 3.6.3
    • Component/s: None
    • None
    • Query Optimization
    • None
    • 3
    • None
    • None
    • None
    • None
    • None
    • None

      Just got acquainted with the $graphLookup aggregation, but it seems a little clunky for my main use case. So I have a combined question and/or feature request:

      My use case is I want to fetch all descendants for a node in a tree structure. But I want them as plain documents. Thus I'm forced to something like:

      db.nodes.aggregate([
              {$match: {_id: 'STARTID'}},
              {
                  $graphLookup: {
                      from: 'nodes',
                      startWith: '$_id',
                      connectFromField: 'children',
                      connectToField: '_id',
                      as: 'descendants',
                  },
              },
              {$unwind: '$descendants'},
              {$replaceRoot: {newRoot: '$descendants'}}
          ])
      

      It would be much more natural to me if the $graphLookup operator could operate without a starting collection, i.e. something like (I know this doesn't work now):

      db.aggregate([
              {
                  $graphLookup: {
                      from: 'nodes',
                      startWith: 'STARTID',
                      connectFromField: 'children',
                      connectToField: '_id'
                  },
              }
          ])
      

      So, is this something that can be done today in some similar fashion. Otherwise, it'd be nice to have.

            Assignee:
            [DO NOT USE] Backlog - Query Optimization
            Reporter:
            Staffan Eketorp
            Votes:
            0 Vote for this issue
            Watchers:
            7 Start watching this issue

              Created:
              Updated: