2016-12-01 3 views
0

vor allem Ich habe verschiedene Methode in Aggregation mongodb versucht, aber kann nicht finden, was ich will.Aggregation Mongodb mit jeder Zeile Daten überprüfen

Ich habe Liste der Sammlung wie folgt aus:

{'ids' : 1, name : 'john', address : 'New Jerse', start_in : '123', start_out : '111' },  
{'ids' : 2, name : 'john', address : 'New Jerse', start_in : '523', start_out : '444' },  
{'ids' : 3, name : 'john', address : 'New Jerse', start_in : '111', start_out : '456' },  
{'ids' : 4, name : 'john', address : 'New Jerse', start_in : '124', start_out : '854' },  
{'ids' : 5, name : 'john', address : 'New Jerse', start_in : '456', start_out : '987' },  
{'ids' : 6, name : 'john', address : 'New Jerse', start_in : '987', start_out : '878' }, 
{'ids' : 7, name : 'john', address : 'New Jerse', start_in : '434', start_out : '544' }, 

und mit Aggregation mongodb, ich möchte eine Ergebnisliste wie folgt aus:

{'ids' : 1, name : 'john', address : 'New Jerse', start_in : '123', start_out : '111' },  
{'ids' : 3, name : 'john', address : 'New Jerse', start_in : '111', start_out : '456' },  
{'ids' : 5, name : 'john', address : 'New Jerse', start_in : '456', start_out : '987' },  
{'ids' : 6, name : 'john', address : 'New Jerse', start_in : '987', start_out : '878' }, 

ist Beziehung in START_OUT mit start_in.

Gibt es eine Möglichkeit, ein Ergebnis wie oben mit Aggregation zu erstellen? Ich verbringe viel Zeit damit, dies zu versuchen, aber immer noch kein Ergebnis.

+0

dies mit Grafik Suche erreicht werden könnte, aber das ist nur in Mongo 3.4, Sie sind ok Das? – Khang

+0

danke kang, Ich habe Update auf Mongo 3.4, und es ist wirklich Arbeit. bis Sie das beantworten, ich weiß immer noch nicht, es gibt eine neue Version mongo 3.4. danke. – xibitz

Antwort

0

Wenn Sie Mongo verwenden 3.4 wird diese Aggregation tun Job:

db.collectionName.aggregate([ 
    { 
     $match: { 
      ids: 1 
     } 
    }, 
    { 
     $graphLookup: { 
      from: 'collectionName', 
      startWith: '$start_out', 
      connectFromField: 'start_out', 
      connectToField: 'start_in', 
      as: 're' 
     }, 
    }, { 
     $project: { 
      result: { 
       $concatArrays: [[{ 
        _id: '$_id', 
        ids: '$ids', 
        name: '$name', 
        address: '$address', 
        start_in: '$start_in', 
        start_out: '$start_out', 
       }],{ 
        $reverseArray: '$re', 
       }] 
      } 
     } 
    } 
]); 

ref: https://docs.mongodb.com/manual/reference/operator/aggregation/graphLookup/

+0

Danke, aber jetzt benutze ich mongo 3.2. ich werde zuerst versuchen, Mongo zu ändern. Aber ich schätze Ihre Antwort. Dank kang. – xibitz