MongoDB C-在文档之间交换元素

MongoDB C-在文档之间交换元素,mongodb,Mongodb,让我们看一个物体: class A { int Value; } 我想做这个伪代码: Document1.Value -= X; Document2.Value += X; 因为我不能同时选择两个文档,所以我必须使它成为两个事务,从Document1中提取X,然后将X放入Document2 在进行传输时,将崩溃、断电、错误等风险降至最低的最佳策略是什么。这完全取决于用例,但通常使用两阶段提交,可以在mongodb文档中阅读: 但是,两阶段提交并不限于mongodb,而是在应用程序中使

让我们看一个物体:

class A
{
    int Value;
}
我想做这个伪代码:

Document1.Value -= X;
Document2.Value += X;
因为我不能同时选择两个文档,所以我必须使它成为两个事务,从Document1中提取X,然后将X放入Document2


在进行传输时,将崩溃、断电、错误等风险降至最低的最佳策略是什么。

这完全取决于用例,但通常使用两阶段提交,可以在mongodb文档中阅读:


但是,两阶段提交并不限于mongodb,而是在应用程序中使用ELSE。

我有一个类似于本文的“保留”系统:我将Document1中的特定金额保留到Document1中的一个字段中,然后更新Document2,并根据情况释放或确认Document1中的保留;但这并不是真正理想的,无论您选择什么解决方案,您都试图在系统中实现可恢复状态。我以前也用过排队的方式来做这件事。为什么您的解决方案不理想?这意味着我必须使用一种工具来扫描和查找挂在那里未完成的事务,以防我们重新启动等。但是,是的,没有完美的解决方案。对于队列,您也有同样的问题,对于任何系统,对这些事务进行适当的监控非常有帮助!您还可以编写一些检查无效状态的内容,以便它能够自我修复。