2016-04-05 5 views
0

Was ich für eine ziemlich triviale Frage hielt, stellte sich als schwierig für mich heraus.MongoDB Rückgabefelder nach Gruppenaggregation

Ich habe eine Sammlung von Ereignisdaten für Benutzer auf einer Website. Ich versuche die Zielseite für jeden Nutzer zu finden. Eindeutige Benutzer haben das Feld anonymousId, und der aktuelle Seitenpfad des Benutzers befindet sich im verschachtelten Feld context.page.path.

Ich kann das erste Datum finden, das der Benutzer besucht, aber bin unsicher, wie man die context.page.path extrahiert, die mit diesem Datum in der gleichen Abfrage einhergeht. Ich benutzen die $first Betreiber auf der Seite Pfad als gut, aber ich bin ziemlich sicher, dass das nicht richtig ist ...

Hier ist der Code, den ich mit dem Cursor in Python (pymongo) zu erstellen:

cursor = db.events.aggregate({ 
    '$group': 
    { 
     '_id': '$anonymousId', 
     'date': { '$first': '$timestamp' }, 
     'page': { '$first': '$context.page.path' } 
    } 
}) 

Edit:

Hier ist die Dokumentstruktur für diese Sammlung (geschwärzt) ...

{ 
    "anonymousId": "...", 
    "timestamp": "2016-04-05T13:05:06.076Z", 
    "context": { 
     "page": { 
      "path": "...", 
      "referrer": "...", 
      "title": "...", 
      "url": "..." 
     } 
    }, 
    ... more fields here but not relevant to this question 
} 
+0

, wenn Sie Dokumentstruktur hinzufügen könnten - wird dann einfacher sein, das Problem zu lösen – profesor79

+0

@ profesor79 dank hinzugefügt. – markdjthomas

Antwort

0

ich glaube, ich bin ein Du hast es herausgefunden ... aber ich bin immer noch nicht 100% positiv.

cursor = db.events.aggregate([ 
{ 
    '$group': 
    { 
     '_id': '$anonymousId', 
     'date': { '$first': '$timestamp' }, 
     'page': { '$push': '$context.page.path' } 
    } 
}, 
{ 
    '$unwind': '$page' 
} 
]) 

den Armen Einzug verzeiht ...