MongoDB Добавить текущую дату в конвейер агрегации - PullRequest
0 голосов
/ 22 января 2020

Как добавить поле в конвейер агрегации, в котором в качестве значения указывается текущая дата (аналогично getdate() в sql)

1 Ответ

1 голос
/ 22 января 2020

Пожалуйста, попробуйте это:

К вашему сведению, даты в mongoDB по умолчанию UT C. Пожалуйста, проверьте это: * 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
}
...