我正在尝试按日期对某个集合中的某些条目进行分组,按日期排序日期'日期'然后按时间排序每天内的条目。
为了做到这一点,我使用mongo聚合按日对条目进行分组,但我不能在一天内订购这些条目。
我的条目集合如下所示: 默认收藏 - 未按任何标准排序
{
name: "entry 1",
date: 1457049600000,
hour: 14
},
{
name: "entry 2",
date: 1487049600000,
hour: 3
},
{
name: "entry 3",
date: 1487049600000,
hour: 21
},
{
name: "entry 4",
date: 1487049600000,
hour: 5
}
我用于聚合的代码: - 按天分组所有条目
{
$group: {
_id: "$dateTime",
entries: {
// pushes entries into a day
// the entries are not push in any order
$push: "$$ROOT"
},
}
},
{
$sort : {
_id : 1
}
}
上面的代码将我的条目分组如下:
{
_id: 1457049600000,
entries: {
{
name: "entry 1",
date: 1457049600000,
}
}
},
{
_id: 1487049600000,
entries: {
{
name: "entry 2",
date: 1487049600000,
hour: 3
},
{
name: "entry 3",
date: 1487049600000,
hour: 21
},
{
name: "entry 4",
date: 1487049600000,
hour: 5
}
}
}
我想对当天所包含的日期和条目进行排序,如下所示:
day1: {
entries: {
entry1: {
name: "entry 1",
date: 1457049600000,
hour: 14
}
}
},
day2: {
// entries sorted by hour
entries: {
entry2: {
name: "entry 2",
date: 1457049600000,
hour: 3
},
entry4: {
name: "entry 4",
date: 1487049600000,
hour: 5
}
entry1: {
name: "entry 1",
date: 1457049600000,
hour: 14
},
entry3: {
name: "entry 3",
date: 1487049600000,
hour: 21
}
}
}
我如何按时间对条目进行排序。在这种情况下,第二天我有两个条目,但它们没有任何订单。我假设我必须在聚合的$ push部分进行一些排序,但我不知道如何。