mongodb—确保将数据保存在不同集合(如应用程序级别的事务)中的策略

mongodb—确保将数据保存在不同集合(如应用程序级别的事务)中的策略,mongodb,transactions,mongodb-php,Mongodb,Transactions,Mongodb Php,我和mongodb一起工作,我认为有一种可能的策略可以将数据保存在不同的集合中,例如2个集合。但是,与事务系统一样,我希望确保数据存在于collection1和collection2中,或者什么都不存在 实际上,我希望在执行某些操作时跟踪在应用程序中执行的操作。例如,当我的应用程序保存数据时,我还需要保存它执行了插入操作,当修改数据时,我需要跟踪修改操作等 这些操作数据可以保存为单个集合的被占用文档。例如,如果我尝试将数据保存到collection1中,那么我可以将“插入操作数据”保存到与被占用

我和mongodb一起工作,我认为有一种可能的策略可以将数据保存在不同的集合中,例如2个集合。但是,与事务系统一样,我希望确保数据存在于collection1和collection2中,或者什么都不存在

实际上,我希望在执行某些操作时跟踪在应用程序中执行的操作。例如,当我的应用程序保存数据时,我还需要保存它执行了插入操作,当修改数据时,我需要跟踪修改操作等

这些操作数据可以保存为单个集合的被占用文档。例如,如果我尝试将数据保存到collection1中,那么我可以将“插入操作数据”保存到与被占用文档相同的collection1中。如果我尝试将数据修改到集合2中,那么我可以将“修改操作数据”保存在与被占用文档相同的集合2中,依此类推。。。 因此,当我想要检索“被占用的文档数据”时,我必须查询collection1、collection2、collection3等。 我认为那很贵。进一步的收集1,收集2,收集3已经被应用程序强调了,所以我不想进一步强调

或者,我可以在单独的集合中保存“操作数据”,例如“oper_coll”集合名称。因此,我只能查询“oper_coll”来检索“operations data”,但这意味着当我在collection1中保存数据时,我必须在“oper_coll”中保存“operations data”以跟踪当前操作。我希望数据正确保存在collection1中,并在oper_coll中进行操作。如果出现问题,则不执行任何操作,两个集合(collection1和oper_coll)中都不存在数据。所以我需要一个应用程序级别的事务系统,因为我知道mongodb不支持事务

所以我想在应用程序级别实现类似的功能,因为我需要将数据1保存到collection1中,如果可以,则将数据2保存到collection2中。如果出现问题,请全部回滚


你有什么想法吗?

首先,我认为这个链接会有所帮助,它提供了一个如何使用mongo协调两阶段提交的示例

基于链接中的示例和一些关于该主题的额外阅读,我使用工作单元设计模式创建了一个mongo风格的事务


这有帮助吗?

首先,我认为这个链接会有所帮助,它提供了一个如何使用mongo协调两阶段提交的示例

基于链接中的示例和一些关于该主题的额外阅读,我使用工作单元设计模式创建了一个mongo风格的事务


这有帮助吗?

你过得怎么样?我将事务数据连同id、日期时间、状态等一起写入事务集合。然后,使用2pc技术,您可以处理事务,并在任何操作失败时手动处理回滚。您还可以在将事务作为挂起写入数据库时重试该事务。在mongo中,你可以自动更新一个文档。你是怎么做到的?我将事务数据连同id、日期时间、状态等一起写入事务集合。然后,使用2pc技术,您可以处理事务,并在任何操作失败时手动处理回滚。您还可以在将事务作为挂起写入数据库时重试该事务。在mongo中,您可以自动更新单个文档。