首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mongodb更新路径会造成冲突。

Mongodb更新路径会造成冲突。
EN

Stack Overflow用户
提问于 2018-02-19 10:20:50
回答 2查看 8K关注 0票数 8

我试图插入新的竞争对手,如果不存在,否则只更新它,但我得到以下错误:

代码语言:javascript
复制
(node:4628) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): MongoError: Updating the path 'competitors' would create a conflict at 'competitors'

这是我对竞争对手的模型:

代码语言:javascript
复制
competitors : [
{
    userid: {type: String, default: 'x'},
    amount:  {type: Number, default: 0},
    reward:  {type: Number, default: 0},

}

],

下面是正在运行的代码段,但是失败并复制代码

代码语言:javascript
复制
 var newInsertMent = {userid: user._id, amount: 0};
                return Competition_global.findOneAndUpdate(
                    {"competitors.userid": user._id, _id: globalCompetition._id},
                    { $addToSet: {"competitors": newInsertMent}, $inc: {"competitors.$.amount": amount}},
                    {upsert: true,new: true}
                    ).then(function (competitionUpdate) {
                    console.log(competitionUpdate);
                    return competitionUpdate;
                });

问:我在这里做错了什么,为什么会造成冲突?

EN

回答 2

Stack Overflow用户

发布于 2021-03-13 23:02:44

在我最近的项目中,我试图完成同样的事情,但也犯了同样的错误。我用两个查询解决了我的问题

首先,让我们找到用户的存在并存储结果。

代码语言:javascript
复制
  let result = Competition_global.findOne(
{"competitors.userid": user._id, _id: globalCompetition._id}
  });

通过使用结果(如果找不到用户),然后在竞争对手数组中推送新的user对象。

代码语言:javascript
复制
  if (result === null) {
    let result = await Competition_global.insertOne(
      {
        $push: {
         // your new user data
        },
      }
    );
  } 

否则,更新用户数量

代码语言:javascript
复制
else {
    let result = await Competition_global.updateOne(
      {"competitors.userid": user._id, _id: globalCompetition._id},
      {
          $inc: {"competitors.$.amount": amount},
      }
    );
  }
});
票数 1
EN

Stack Overflow用户

发布于 2019-12-17 14:40:49

这是已知的猫鼬的#7003问题(可能是mongodb)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48863956

复制
相关文章

相似问题

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