Im Moment habe ich eine Mongoose Abfrage, die ich recht tue eine Menge in meiner Anfrage So etwas wieGruppendokumente für Monat in MongoDB
Collection
.find(selector)
.sort(sortCriteria)
.select(selectCriteria)
.populate(populateCriteria1)
.populate(populateCriteria2)
.then(docs => ...)
.catch(errHandler)
aussieht.
Jedes Dokument in meiner Sammlung hat ein Datum. Ich möchte, dass die Dokumente nach Monat und Jahr gruppiert angezeigt werden. So sollte es so etwas wie
docs = [
{ _id: { year: 2017, month: 4 }, docs: [ ... ] },
{ _id: { year: 2017, month: 5 }, docs: [ ... ] },
{ _id: { year: 2017, month: 6 }, docs: [ ... ] }
]
Ich denke, werden dies ist ein einfaches .aggregate()
, aber ich bin nicht sicher, wo ich sollte es gehören, da ich Filterung tue .find()
mit, Sortieren mit .sort()
, Feldauswahl .select()
mit und füllt mit .populate()
.
Jedes Dokument hat das Feld date
, so könnte es so etwas wie
Collection
.find(selector)
.aggregate([
{ $project: { month: { $month: $date }, year: { $year },
{ $group: { _id: { $month: $date, $year: $date }, docs: { $push: '' } }
])
Danke aber kann ich es zusammen mit 'populate()' tun? Sie schreiben '$ push: {field1: ...'. Ist es möglich, nur zu sagen, dass es alle Felder, die ich ausgewählt habe, schieben sollte? – Jamgreen
Oh, ich bin mir nicht sicher, ich bin nicht wirklich vertraut mit Mungo .. –