gpt4 book ai didi

mongodb - 是否可以在 MongoDB 的单个事务中执行多个数据库操作?

转载 作者:行者123 更新时间:2023-12-02 21:17:01 31 4
gpt4 key购买 nike

假设我有两个集合AB

我要执行一个操作

db.A.remove({_id:1});
db.B.insert({_id:"1","name":"dev"})

我知道 MongoDB 在文档级别维护原子性。是否可以在单个事务中执行上述一组操作?

最佳答案

是的,现在你可以了!

MongoDB 长期以来一直在单个文档级别上进行原子写入操作。但是,直到v4.0.0,MongoDB才支持多文档操作的原子性。由于 MongoDB Transactions 的发布,多文档操作现在本质上是原子的。

但请记住,事务仅在使用 WiredTiger 存储引擎的副本集中受支持,而不是在独立服务器中受支持(但将来也可能在独立服务器上支持!)

这是官方文档中也提供的 mongo shell 示例:

// Start a session.
session = db.getMongo().startSession( { readPreference: { mode: "primary" } } );

employeesCollection = session.getDatabase("hr").employees;
eventsCollection = session.getDatabase("reporting").events;

// Start a transaction
session.startTransaction( { readConcern: { level: "snapshot" }, writeConcern: { w: "majority" } } );

//As many operations as you want inside this transaction
try {
employeesCollection.updateOne( { employee: 3 }, { $set: { status: "Inactive" } } );
eventsCollection.insertOne( { employee: 3, status: { new: "Inactive", old: "Active" } } );
} catch (error) {
// Abort transaction on error
session.abortTransaction();
throw error;
}

// Commit the transaction using write concern set at transaction start
session.commitTransaction();

session.endSession();

我建议您阅读thisthis更好地了解如何使用!

关于mongodb - 是否可以在 MongoDB 的单个事务中执行多个数据库操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30071361/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com