我对 MongoDB 比较陌生,并且在尝试实现受这种技术启发的事务:
http://cookbook.mongodb.org/patterns/perform-two-phase-commits/
我正在考虑如何阻止给定源/目标帐户的同时交易。例如,我可以通过将源声明为唯一索引来阻止同一源上的同时事务:
transactionsCollection.ensureIndex({"source":1}, {unique: true});
var newDoc = {source: sourceID, destination: destinationID,
amount: 100, state:"pending"}
transactionsCollection.save(newDoc, {safe:true}, function(error, t) {
if (error.name == "MongoError" && error.code == 11001)
// duplicate index, so I'm locked out
}
但是,如果源或目标已经在事务表中(作为源或目标),我真正想要的是被锁定。
所以我的问题是是否有可能以允许上述方式的方式设置索引,或者如果没有其他方式来实现这一点。
谢谢!