如何在 MongoDB 3.6 中增加一秒值的日期字段?

How to increase a date field with one second value in a MongoDB 3.6?

MongoDB 脚本对我来说仍然很神秘,并且在缺少 4.2 的高级运算符的 3.6 服务器上遇到了这个问题。

如何在 MongoDB 3.6 中增加一秒值的日期字段?

例如,我想做这样的事情:

db.getCollection("therecords").update(
   { 
      "_id" : ObjectId("123etc")
   }, 
   { 
      $set: {
         updatedAt : "$updatedAt" + 1 ;
      }
   }
);

…将值设置为可爱的文本$updatedAt1

使用不带引号或 $ 前缀的 updatedAt 时会抛出其他可爱的错误。

更一般地说,有没有办法通过 update … $set 重用当前值?

我认为在 MongoDB v3.6 中使用单个查询不可能做到这一点,但是:

  1. find() 具体文件
  2. forEach() 找到文档,获取日期和碰撞
  3. save() 回来
db.getCollection("therecords").find(
    { 
        "_id" : ObjectId("123etc") 
    }
).forEach(function(doc) {
   var d = new Date(doc.createdAt);
   d.setSeconds(d.getSeconds() + 1);
   doc.createdAt = d;
   db.getCollection("therecords").save(doc); // Save each back
});