首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MongoDB转换日期为字符串

MongoDB转换日期为字符串
EN

Stack Overflow用户
提问于 2016-01-18 13:33:18
回答 1查看 21.6K关注 0票数 7

问题:

Y-m-d获取"SentTimestamp" : ISODate("2015-12-23T22:20:15Z")时出错

详细信息:

文档:

代码语言:javascript
运行
复制
{
...
"SentTimestamp" : ISODate("2015-12-23T22:20:15Z")
...
}

查询:

代码语言:javascript
运行
复制
db.foo.find({}, {$dateToString: {format:"%Y-%m-%d", date:"$SentTimestamp"}})

错误:

代码语言:javascript
运行
复制
Error: error: {
    "$err" : "Can't canonicalize query: BadValue >1 field in obj: { format: \"%Y-%m-%d\", date: \"$SentTimestamp\" }",
    "code" : 17287

有人能解释一下我怎么把日期转换成字符串,上面有什么问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-18 13:40:43

不能在$dateToString方法中使用带有投影的find()运算符。相反,将其与聚合框架一起用于$addFields$project管道阶段,以返回将datetime字段转换为具有所需格式的字符串的文档,如下面的示例所示:

使用$addFields

代码语言:javascript
运行
复制
db.foo.aggregate([
    { "$addFields": {
        "sentDateString": { 
            "$dateToString": { 
                "format": "%Y-%m-%d", 
                "date": "$SentTimestamp" 
            } 
        }
    } }
])

或者使用$project

代码语言:javascript
运行
复制
db.foo.aggregate([
    { "$project": {
        "sentDateString": { 
            "$dateToString": { 
                    "format": "%Y-%m-%d", 
                    "date": "$SentTimestamp" 
            } 
        },
        "otherFields": 1, ....
    } }
])
票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34856038

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档