使用以下MongoDB版本(package.json
内容):
"mongodb": "^3.0.2"
我有以下代码:
const addValue = 10;
await db.db('dbname').collection('collname').updateOne({
bar: bar
}, {
$set: {
foo: foo
}
}
);
我想将变量foo设置为foo的旧值+ addValue变量。伪代码中是这样的:
$set: {
foo: foo + addValue
}
实现此代码时,我得到以下信息,我得到了一个ReferenceError:
C:\Users\wille\Desktop\Projects\nv\server\XXX_playground.js:28
foo: foo + addValue
^
**ReferenceError**: foo is not defined
at Timeout.test [as _onTimeout] (C:\Users\wille\Desktop\Projects\nv\server\XXX_playground.js:28:26)
at ontimeout (timers.js:424:11)
at tryOnTimeout (timers.js:288:5)
at listOnTimeout (timers.js:251:5)
at Timer.processTimers (timers.js:211:10) PS C:\Users\wille\Desktop\Projects\nv\server>
我只是首先可以使用findOne
查询foo变量,然后将其存储在变量中,然后在updateOne
中使用它。但是,这将导致2个查询,并且似乎不是最佳选择。
是否可以在一个查询中做到这一点?
答案 0 :(得分:1)
猫鼬的$inc
运算符接受增量值作为传递给它的对象的值:
const addValue = 10;
await db.db('dbname').collection('collname').updateOne({
bar: bar
}, {
$inc: {
foo: addValue // the value you want to increment by
}
});