首页 > 解决方案 > MongoDB在聚合管道中添加当前日期

问题描述

如何在我将当前日期设置为值的聚合管道中添加一个字段(类似于getdate()在 sql 中)

标签: mongodbdateaggregation-framework

解决方案


请试试这个:

仅供参考,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
}

推荐阅读