mongodb - MongoDB在聚合管道中添加当前日期
问题描述
如何在我将当前日期设置为值的聚合管道中添加一个字段(类似于getdate()
在 sql 中)
解决方案
请试试这个:
仅供参考,mongoDB 中的日期默认为 UTC。请检查这个 :: MongoDB-Date()
db.collection.aggregate([{$addFields : {dateField : new Date()}}])
收集数据:
/* 1 */
{
"_id" : ObjectId("5e287d7ad02e05b694bcce8a"),
"addingDate" : true
}
结果 :
/* 1 */
{
"_id" : ObjectId("5e287d7ad02e05b694bcce8a"),
"addingDate" : true,
"dateField" : ISODate("2020-01-22T17:03:17.928Z") // In UTC
}
以防万一您需要添加当地时间,请传入您的time-zone
:
db.collection.aggregate([{
$addFields: {
dateField: {
$dateToParts: { date: new Date(), timezone: "America/New_York" }
}
}
},
{
$addFields: {
dateField: {
$dateFromParts: {
'year': '$dateField.year', 'month': '$dateField.month', 'day': '$dateField.day',
'hour': '$dateField.hour', 'minute': '$dateField.minute', 'second': '$dateField.second', 'millisecond': '$dateField.millisecond'
}
}
}
}])
结果 :
/* 1 */
{
"_id" : ObjectId("5e287d7ad02e05b694bcce8a"),
"addingDate" : true,
"dateField" : ISODate("2020-01-22T12:03:17.928Z") // Date in passed in time-zone
}