首页 > 解决方案 > 如何在猫鼬中使用 $dateToString

问题描述

我在 mongoDB 中有这个聚合。

db.collection.aggregate([
  {
    "$group": {
      "_id": {
          "$dateToString": {
              "format": "%Y-%m-%d",
              "date": {
                    "$add": [
                      "$timestamp",
                      18000000
                    ]
              }
          }
        },
      "list": {
        "$addToSet": "$timestamp"
      }
    }
  }
])

但是当我将此聚合与猫鼬一起使用时,它会显示此错误。

{
    "ok": 0,
    "errmsg": "unknown group operator '$dateToString'",
    "code": 15952,
    "codeName": "Location15952",
    "name": "MongoError"
}

我按照这个链接搜索了 mongoose 中没有 $dateToString 。
https://mongoosejs.com/docs/api/aggregate.html
如何为猫鼬修改我的 mongoDB agrregate?非常感谢您阅读它。

标签: mongodbmongoose

解决方案


几个问题:

  • 错误不是来自猫鼬,而是来自 MongoDB 本身
  • $dateToString先取日期,再取格式
  • $dateToString仅适用于 MongoDB v3.0(您是否正在运行 MongoDB >= v3.0?)
  • $dateToString在操作员内部不可用$group _id (从技术上讲,它应该是,错误消息说它不是)

$project在舞台之前添加一个舞台$group并在那里添加日期转换。然后您可以按您在 中介绍的新领域进行分组$project


推荐阅读