Увеличение дня до даты в MongoDB - PullRequest
0 голосов
/ 03 февраля 2020

Как я могу увеличить дату на 7 дней в документе, не устанавливая дату вручную?

Collection Data:
{
    "_id" : ObjectId("5e302f83edd1fd00125abbf9"),
    "dateTransferred" : 2020-01-26T00:00:00.000+00:00
}

Я могу легко обновить коллекцию, используя:

db.data.updateMany(
  {},
  {
    "$set": { "dateTransferred": new ISODate("2020-02-03T03:34:54Z") }
  }
)

Есть ли способ, которым я могу обновить его динамически (аналогично DateAdd)

Ответы [ 2 ]

1 голос
/ 03 февраля 2020

Да, в MongoDB 4.2+ вы можете обновить его следующим образом:

db.col.updateOne(
   { "_id": ObjectId("5e302f83edd1fd00125abbf9") },
   [
      { $set: { dateTransferred: { $add: ["$dateTransferred", 1000 * 60 * 60 * 24] } } }
   ]
)

Конечно, если вы хотите обновить все документы, тогда это будет

db.col.updateMany(
   {},
   [
      { $set: { dateTransferred: { $add: ["$dateTransferred", 1000 * 60 * 60 * 24] } } }
   ]
)
0 голосов
/ 03 февраля 2020

Нет, вы не можете получить доступ к значениям записи, которая обновляется с помощью этой простой записи.

Возможно, вы захотите попробовать использовать конвейер агрегации (ограниченный mongodb 4.2+), как описано здесь: https://docs.mongodb.com/manual/reference/method/db.collection.update/#update -с агрегационным конвейером

Пока я сам не пробовал, но выглядит многообещающе; -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...