我在服务器端使用nodejs和mongodb。
我可以使用update if found
处理mongodb文档以进行交易处理,例如 -
// Pseudocode
var filter = { _id : 123, status : single };
db.myself.update(filter, new_document);
这会将自己的状态从单个更新为已提交。其他线程不会更新,因为状态不再是单一的。
NodeJS在单线程中运行。那么,以下代码也将是事务安全的 -
// Pseudocode
var filter = { _id = 123 };
db.myself.findOne(filter).toArray(function(err, result)) {
if(!err) {
if(result.status == single) { // checking status manually
db.myself.update(filter, new_document);
}
}
});