Mongodb aggregation ist $group, beschränken die Länge von array

Möchte ich der Gruppe alle Dokumente nach einem Feld, aber zum einschränken der Anzahl der Dokumente gruppiert, die für jeden Wert.

Jede Nachricht hat eine conversation_ID. Ich brauche, um die 10 oder kleinere Anzahl von Nachrichten für jeden conversation_ID.

Ich bin in der Lage, die Gruppe nach den folgenden Befehl ein, kann aber nicht herausfinden, wie die Einschränkung der
Anzahl der gruppierten Dokumente abgesehen von slicing-die Ergebnisse
Message.aggregate({'$group':{_id:'$conversation_ID',msgs:{'$push':{msgid:'$_id'}}}})

Wie begrenzen Sie die Länge der Nachrichten-array für jedes conversation_ID 10?

  • Viel curlier Frage, als Sie vielleicht denken. Die große Sache ist SERVER-6074 und ähnlichen Themen. Das aggregation framework nicht unterstützt $slice oder Operationen zu "begrenzen" die Elemente geschoben. Aber es ist möglich, einfach nur schrecklich.
  • Nur stubmled auf SERVER-6074 nach ein bisschen googeln. So jetzt manuelle schneiden ist die einzige Möglichkeit?
  • Nicht nur - option. Wie gesagt, großes Thema, so dauert es ein wenig zu erklären, den Prozess. Es wäre schön, wenn andere Operatoren zu tun, obwohl dies. Abstimmung für JIRA-issues
InformationsquelleAutor ma08 | 2014-06-28
Schreibe einen Kommentar