MongoDB聚合使用$dateFromString报错:dateString应为字符串而非日期类型
MongoDB $dateFromString 聚合报错解决
报错原因
你遇到的报错:
MongoServerError: PlanExecutor error during aggregation :: caused by :: $dateFromString requires that 'dateString' be a string, found: date with value 2022-09-08T12:45:30.811Z
核心问题是:$dateFromString的作用是将字符串转换为Date类型,但你的createdAt字段本身就是MongoDB自动存储的Date类型(因为Schema里设置了{ timestamps: true }),完全没必要用这个操作符转换,直接使用字段即可。
修正后的聚合代码
db.collection.aggregate([{ $group: { _id: { createdAt: '$createdAt' } } }])
进阶需求:按日期维度分组(忽略时分秒)
如果你的实际需求是按日期(年月日)而非完整时间戳分组,可以用$dateTrunc操作符实现:
db.collection.aggregate([{ $group: { _id: { $dateTrunc: { date: '$createdAt', unit: 'day' // 可按需改为hour/month等 } }, total: { $sum: 1 } // 统计每组数量 } }])
内容的提问来源于stack exchange,提问作者ds97
相关产品推荐
相关产品推荐

