MongoDB-是否可以按日期分组并重新排序到数组中?

MongoDB-是否可以按日期分组并重新排序到数组中?,mongodb,Mongodb,我有一个nodejs后端正在运行,连接到mongodb。我的文档看起来像: { _id: ObjectID date: "2020-05-05T09:01:55.868+00:00" keyA: valueA keyB: valueB }, { _id: ObjectID date: "2020-05-05T09:01:55.868+00:00" keyA: valueC keyB: valueD }, { _id: ObjectID date: "202

我有一个nodejs后端正在运行,连接到mongodb。我的文档看起来像:

{
  _id: ObjectID
  date: "2020-05-05T09:01:55.868+00:00"
  keyA: valueA
  keyB: valueB
},
{
  _id: ObjectID
  date: "2020-05-05T09:01:55.868+00:00"
  keyA: valueC
  keyB: valueD
},
{
  _id: ObjectID
  date: "2020-05-05T09:02:56.868+00:00"
  keyA: valueE
  keyB: valueF
}
{
  date: "2020-05-05T09:01:55.000+00:00"
  items: [
    {
      keyA: valueA
      keyB: valueB
    },
    {
      keyA: valueC
      keyB: valueD
    }
  ]
},
{
  date: "2020-05-05T09:02:56.000+00:00"
  items: [
    {
      keyA: valueE
      keyB: valueF
    }
  ]
}
现在,我想按日期对所有文档进行分组,但不丢失额外的值。我的结果应该是:

{
  _id: ObjectID
  date: "2020-05-05T09:01:55.868+00:00"
  keyA: valueA
  keyB: valueB
},
{
  _id: ObjectID
  date: "2020-05-05T09:01:55.868+00:00"
  keyA: valueC
  keyB: valueD
},
{
  _id: ObjectID
  date: "2020-05-05T09:02:56.868+00:00"
  keyA: valueE
  keyB: valueF
}
{
  date: "2020-05-05T09:01:55.000+00:00"
  items: [
    {
      keyA: valueA
      keyB: valueB
    },
    {
      keyA: valueC
      keyB: valueD
    }
  ]
},
{
  date: "2020-05-05T09:02:56.000+00:00"
  items: [
    {
      keyA: valueE
      keyB: valueF
    }
  ]
}
实现这一目标的最佳方式是什么?我想我可以只查询所有内容并编写一些简单的js,但是为了速度和简单起见,我想将所有内容合并到mongodb查询中。我发现了许多关于聚合$group函数的帖子,但他们使用它的目的只是计算找到了多少项(在我的例子中是项)。正如你可能已经注意到的那样,我不仅希望按完全相同的日期分组,而且还希望按时间段分组,在我的例子中是1s。

你可以试试这个

db.helloworld.aggregate ([
        {
            $group: {
                _id: "$date",
                items: { $push: { keyA: "$keyA", keyB: "$keyB" } }
            }
        }
    ])

希望这有帮助。

非常感谢。这正是我想要的。