jsb*_*sht 28 date mongoose mongodb aggregation-framework
我遇到运行以下聚合查询的问题:
db.snippets.aggregate([ { '$project': { month: { '$month': '$created_at' }} } ])
Run Code Online (Sandbox Code Playgroud)
相同的错误消息是:
assert: command failed: {
"errmsg" : "exception: can't convert from BSON type EOO to Date",
"code" : 16006,
"ok" : 0 } : aggregate failed
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题.我找到了一个相关的问题
但它并没有说明如何完成任务.
Joh*_*yHK 58
您可能有一个或多个文档的created_at值不是BSON Date,您需要通过将这些值转换为Date或删除它来解决这个问题.
您可以$not通过使用$type运算符的查询找到那些文档:
db.snippets.find({created_at: {$not: {$type: 9}}})
Run Code Online (Sandbox Code Playgroud)
如果created_at值是日期字符串,您可以找到需要更新的文档,然后使用以下代码在shell中更新它们:
db.snippets.find({created_at: {$not: {$type: 9}}}).forEach(function(doc) {
// Convert created_at to a Date
doc.created_at = new Date(doc.created_at);
db.snippets.save(doc);
})
Run Code Online (Sandbox Code Playgroud)
小智 5
试试这个,它对我上面的问题有帮助。
db.snippets.aggregate([{
'$project': {
month: { $substr: ["$created_at", 5, 2] }
}
}]);
Run Code Online (Sandbox Code Playgroud)
上面的代码得到明智的月份
数据以 ISO 格式输入数据库,然后可以轻松处理。
| 归档时间: |
|
| 查看次数: |
26639 次 |
| 最近记录: |