我需要从集合中读取文档,读取其值,然后如果值是<40,则需要增加值。
这是我当前的解决方案
let promise = db.collection('transactions').findOne(
{ _id: 'myid' }
).then(doc => {
if (doc.count < 40) {
///update & increment doc.count
}
else {
//do not increment
}
});
findOneAndModify允许在修改之前阅读文档吗?
答案 0 :(得分:0)
您可以在查询中对此条件进行编码,然后执行简单的update
:
db.collection('transactions').updateOne(
{_id: 'id', count: {$lt: 40}},
{$inc: {count: 1}}
)
如果需要获取文档(在修改之前或之后),只需使用findAndModify
:
db.collection('transactions').findAndModify({
query: {_id: 'id', count: {$lt: 40}},
update: {$inc: {count: 1}},
new: trueIfYouWantToGetTheModifiedVersion
})
答案 1 :(得分:0)
http://www.mongoing.com/docs/reference/method/db.collection.findOneAndUpdate.html
db.collection.findOneAndUpdate(
<filter>,
<update>,
{
projection: <document>,
sort: <document>,
maxTimeMS: <number>,
upsert: <boolean>,
returnNewDocument: <boolean>,
collation: <document>
}
)