问题: 从" SentTimestamp"获得Y-m-d时出错:ISODate(" 2015-12- 23T22:20:15Z")
详情:
文件: { ... " SentTimestamp" :ISODate(" 2015-12-23T22:20:15Z") ... }
查询:
db.foo.find({},{$ dateToString:{格式:&#34;%Y-%m-%d&#34;,日期:&#34; $ SentTimestamp&#34;}})< / p>
错误: 错误:错误:{ &#34; $ ERR&#34; :&#34;无法规范化查询:obj中的BadValue&gt; 1字段:{format:\&#34;%Y-%m-%d \&#34;,date:\&#34; $ SentTimestamp \&#34; }&#34 ;, &#34;代码&#34; :17287
有人可以解释我如何将日期转换为字符串,上面有什么问题?
答案 0 :(得分:4)
您无法在 $dateToString
方法中使用 find()
运算符进行投影。相反,将其与 aggregation framework 管道阶段中的$project
一起使用以返回文档
将datetime字段转换为具有所需格式的字符串,如下例所示:
db.foo.aggregate([
{
"$project": {
"sentDateString": {
"$dateToString": {
"format": "%Y-%m-%d",
"date": "$SentTimestamp"
}
},
"otherFields": 1, ....
}
}
])