在MongoShell中尝试使用MongoDB 4.0的事务功能

在MacOS上安装MongoDB 4.0并尝试使用事务。

首先下载并解压MongoDB 4.0。

wget https://fastdl.mongodb.org/osx/mongodb-osx-ssl-x86_64-4.0.0.tgz
tar zxvf mongodb-osx-ssl-x86_64-4.0.0.tgz

创建数据目录

cd mongodb-osx-x86_64-4.0.0/
mkdir data

在MongoDB中以副本集模式启动(由于常规模式无法使用事务)。

./bin/mongod --dbpath data --replSet rs1

在另一个终端中使用Mongo shell连接并设置一个由一个mongod组成的副本集,并进行初始化。

./bin/mongo
> rs.initiate({"_id":"rs1",members:[{_id:0,host:"<IPアドレス>:27017"}]})

当提示符显示为rs1:PRIMARY>时,表示副本集已成功建立,可以开始操作。

首先,在test数据库的mycol集合中,插入一条数据。

rs1:PRIMARY> use test
switched to db test
rs1:PRIMARY> db.mycol.insert({"a":1})
WriteResult({ "nInserted" : 1 })

开始一项交易并输入第二个数据。

rs1:PRIMARY> session = db.getMongo().startSession()
session { "id" : UUID("0277f85e-b00f-4d3e-8398-7afa22fc5e97") }
rs1:PRIMARY> session.startTransaction()
rs1:PRIMARY> mycol = session.getDatabase("test").mycol
test.mycol
rs1:PRIMARY> mycol.insert({"a":2})
WriteResult({ "nInserted" : 1 })

在这个阶段,其他客户端无法看到{“a”:2}的文档。

提交交易

rs1:PRIMARY> session.commitTransaction()

这样,其他客户端也可以看到{“a”:2}的文档了。

广告
将在 10 秒后关闭
bannerAds