mongodb - 在 MongoDB shell FIND 脚本中格式化日期值

标签 mongodb shell mongodb-query

这是我的 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
}

我怎样才能完成这项工作,我还想将其他字段添加到投影中,而没有任何格式

最佳答案

您正在运行的聚合管道有错误的 $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 })

关于mongodb - 在 MongoDB shell FIND 脚本中格式化日期值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38748531/

相关文章:

mongodb - 如何将 MongoDb 查询转换为 csv(excel 格式)

Java MongoDB 无法使用集合中的字符串条件进行查询

mongodb - 如何在 MongoDB 中查找带计数的连续文档?

linux - 从shell脚本中的目录获取文件名

shell - Docker 如何在不调用命令 shell 的情况下运行命令?

node.js - 如何为 MongoDB 集合中的文档选择单个字段?

ruby-on-rails - Rails 和 Mongoid::将字符串转换为数组

mongodb - node js+mongodb简单插入操作的最大并发连接数

python - 如何通过Python将时间戳值插入MongoDB上的ISODate类型?

bash - 如何在shell编程中从键盘输入数据