Node.js 将带有Unix时间戳的字段转换为日期(Mongodb/NodeJS)

Node.js 将带有Unix时间戳的字段转换为日期(Mongodb/NodeJS),node.js,mongodb,Node.js,Mongodb,我在MongoDB中使用聚合按$year、$month和$dayOfMonth对字段进行分组 Transaction.aggregate( [{ $group: { _id: { year : { $year : "$createdAt" }, month : { $month : "$createdAt"

我在MongoDB中使用聚合按$year、$month和$dayOfMonth对字段进行分组

Transaction.aggregate(
        [{
            $group: {
                _id: {
                    year : { $year : "$createdAt" },
                    month : { $month :  "$createdAt" },
                    day : { $dayOfMonth :  "$createdAt" },
                },
                totalQuantity: {
                    $sum: "$totalQuantity"
                },
                totalAmount: {
                    $sum: "$totalAmount"
                },
                totalPayment: {
                    $sum: "$totalPayment"
                },
                count: { $sum: 1 }
            }
        }
            ]).then( res =>  console.log(res));
在上面的代码中,我使用的是默认的$createdAt字段,但是当我尝试使用在Unix时间戳中包含日期的$date时,它会抛出一个错误

我试过什么

Transaction.aggregate(
        [{
            $group: {
                _id: {
                    year : { $year : new Date("$date") },
                    month : { $month :  new Date("$date") },
                    day : { $dayOfMonth :  new Date("$date") },
                },
                totalQuantity: {
                    $sum: "$totalQuantity"
                },
                totalAmount: {
                    $sum: "$totalAmount"
                },
                totalPayment: {
                    $sum: "$totalPayment"
                },
                count: { $sum: 1 }
            }
        }
            ]).then( res =>  console.log(res));
但这不起作用,因为“$date”作为字符串传递给日期构造函数。任何解决方法?

您可以使用,将unix时间戳毫秒转换为iso日期

  • $addFields
    转换
    createdAt
    并替换值
  • 您可以直接在
    $group
游乐场:

您也可以在
$group
内部进行转换,但这将转换三次,您可以添加一次,并在组中使用,如上面的示例所示

  year: { $year: { $toDate: "$createdAt" } },
  month: { $month: { $toDate: "$createdAt" } },
  day: { $dayOfMonth: { $toDate: "$createdAt" } }
  {
    $group: {
      _id: {
        year: { $year: "$createdAt" },
        month: { $month: "$createdAt" },
        day: { $dayOfMonth: "$createdAt" }
      }
    }
  }
  year: { $year: { $toDate: "$createdAt" } },
  month: { $month: { $toDate: "$createdAt" } },
  day: { $dayOfMonth: { $toDate: "$createdAt" } }