首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MongoDb多集合事务不起作用

MongoDb多集合事务不起作用
EN

Stack Overflow用户
提问于 2020-09-25 23:33:35
回答 1查看 29关注 0票数 0

我必须更新两个集合。我希望确保这两个集合要么更新,要么不更新。

我创建了两个更新的简单示例(它们在这里都使用相同的集合,但它们可以是不同的):

代码语言:javascript
复制
       await this.client.connect();
    const session = this.client.startSession();

    try{
      const transactionOptions = {
        readPreference: 'primary',
        readConcern: { level: 'local' },
        writeConcern: { w: 'majority' }
    };

    await session.withTransaction(async () => {
    await this.client.db("Person").collection("persons").updateMany({ "phone":  "23138213"}, {$set: {"gender": "F10"} });
    await this.client.db("Person").collection("persons").updateMany({ "phone":  "23138213"},  "d");
  }, transactionOptions)
}
  finally{
    await session.endSession();

  }

现在,如果性别的初始值为空,""。然后在执行上面的代码后,最终的值应该仍然是"",因为第二次更新是无效的语法,并且会抛出异常。

但结果是gender:Male

EN

回答 1

Stack Overflow用户

发布于 2020-09-26 21:42:44

最终基于@D. SM的宝贵意见解决了这个问题。

代码语言:javascript
复制
    await this.client.connect();
    const session = this.client.startSession();

    try{
      const transactionOptions = {
        readPreference: 'primary',
        readConcern: { level: 'local' },
        writeConcern: { w: 'majority' }
    };
    await session.withTransaction(async () => {
    await this.client.db("Person").collection("persons").updateMany({ "phone":  "23138213"}, {$set: {"gender": "G2"} }, { session });
    await this.client.db("Person").collection("persons").updateMany({ "phone":  "23138213"},  "G2", { session });
  }, transactionOptions)
}
  finally{
    await session.endSession();
  }

即使在将会话传递给更新之后,事务似乎也无法工作。问题是我应该把它包装在{}

代码语言:javascript
复制
await this.client.db("Person").collection("persons").updateMany({ "phone":  "23138213"}, {$set: {"gender": "G2"} }, { session });

代替

代码语言:javascript
复制
await this.client.db("Person").collection("persons").updateMany({ "phone":  "23138213"}, {$set: {"gender": "G2"} }, session );
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64067167

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档