如何在 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 中使用单个查询不可能做到这一点,但是:
find()
具体文件
forEach()
找到文档,获取日期和碰撞
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
});
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 中使用单个查询不可能做到这一点,但是:
find()
具体文件forEach()
找到文档,获取日期和碰撞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
});