我在MongoDB中有大量的事件文档,希望将其分组createdAt
,并获得title
当天创建的事件的唯一值。
活动文档如下:
{
"createdAt": 2020-02-03T00:00:00.000Z,
"title": "Book meeting"
}
到目前为止,我得到了输出:
[{
"titles": [
"Book meeting",
"Book meeting",
"Personal meeting",
"Personal meeting",
"Book meeting",
"Book meeting",
"Book meeting",
"Book meeting",
"Training",
"Book meeting",
"Book meeting",
"Book meeting",
"Book meeting",
"Book meeting",
"Book meeting",
"Book meeting",
"Digital meeting",
"Support"
],
"date": "2020-02-03T00:00:00.000Z"
}, ...events ],
但我希望它是:
{
"Book meeting": 10,
"Digital meeting": 7,
...for all titles
"date": "2020-02-03T00:00:00.000Z"
},
到目前为止,这是我正在做的事情:
Events.aggregate().group({
_id: {
createdAt: "$createdAt",
title: "$title"
}
})
.group({
_id: {
year: { $year: "$_id.createdAt" },
month: { $month: "$_id.createdAt" },
day: { $dayOfMonth: "$_id.createdAt" }
},
titles: { $push: "$_id.title" }
})
.project({
_id: 0,
date: {
$dateToString: {
date: {
$dateFromParts: {
year: "$_id.year",
month: "$_id.month",
day: "$_id.day"
}
}
}
},
titles: 1,
})
尝试这个:
Events.aggregate([
{
$group: {
_id: {
title: "$title",
date: {
$dateToString: {
date: "$createdAt",
format: "%Y-%m-%d"
}
}
},
count: {
$sum: 1
}
}
},
{
$group: {
_id: "$_id.date",
titles: {
$push: {
k: "$_id.title",
v: "$count"
}
}
}
},
{
$addFields: {
titles: {
$mergeObjects: [
{
"date": {
$concat: [
"$_id",
"T00:00:00.000Z"
]
}
},
{
$arrayToObject: "$titles"
}
]
}
}
},
{
$replaceWith: "$titles"
}
]).exec();
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句