这是我的 Mongo Shell脚本
db.MyCollection.find({ "ProjectID" : 999 } }, {
"_id" : 0,
"DueDate" : 1
}).sort({ "CreatedDate" : -1 })
结果
{
"DueDate" : ISODate("2016-02-20T08:00:00.000Z")
}
预期结果:
{
"DueDate" : "2016-02-20 08:00 AM"
}
尝试遵循此article
db.MyCollection.aggregate(
[
{
$project: {
yearMonthDay: { $dateToString: { format: "%Y-%m-%d", date: "$DueDate" } },
time: { $dateToString: { format: "%H:%M:%S:%L", date: "$DueDate" } }
}
}
]
)
提供以下 null 结果
{
"_id" : ObjectId("578e3bb48c305af06d30147e"),
"yearMonthDay" : null,
"time" : null
}
我如何才能完成这项工作,我还想在投影中添加其他字段而不包含任何格式
答案 0 :(得分:0)
您运行的汇总管道具有错误的 $dateToString
格式。您需要运行此管道才能获得正确的结果:
db.MyCollection.aggregate([
{ "$match": { "ProjectID" : 999 } },
{ "$sort": { "CreatedDate": -1 } },
{
"$project": {
"_id": 0,
"DueDate": {
"$dateToString": {
"format": "%Y-%m-%d %H-%M",
"date": "$DueDate"
}
}
}
}
])
恰好是mongo shell查询的日期格式化版本:
db.MyCollection.find(
{ "ProjectID" : 999 }
{ "_id" : 0, "DueDate" : 1 }
}).sort({ "CreatedDate" : -1 })