问题:
从Y-m-d
获取"SentTimestamp" : ISODate("2015-12-23T22:20:15Z")
时出错
详细信息:
文档:
{
...
"SentTimestamp" : ISODate("2015-12-23T22:20:15Z")
...
}
查询:
db.foo.find({}, {$dateToString: {format:"%Y-%m-%d", date:"$SentTimestamp"}})
错误:
Error: error: {
"$err" : "Can't canonicalize query: BadValue >1 field in obj: { format: \"%Y-%m-%d\", date: \"$SentTimestamp\" }",
"code" : 17287
有人能解释一下我怎么把日期转换成字符串,上面有什么问题吗?
发布于 2016-01-18 13:40:43
不能在$dateToString
方法中使用带有投影的find()
运算符。相反,将其与聚合框架一起用于$addFields
或$project
管道阶段,以返回将datetime字段转换为具有所需格式的字符串的文档,如下面的示例所示:
db.foo.aggregate([
{ "$addFields": {
"sentDateString": {
"$dateToString": {
"format": "%Y-%m-%d",
"date": "$SentTimestamp"
}
}
} }
])
或者使用$project
db.foo.aggregate([
{ "$project": {
"sentDateString": {
"$dateToString": {
"format": "%Y-%m-%d",
"date": "$SentTimestamp"
}
},
"otherFields": 1, ....
} }
])
https://stackoverflow.com/questions/34856038
复制相似问题