当前位置: 首页 > 面试题库 >

findAndModify失败,并显示错误:“无法同时更新'field1'和'field1'

潘修文
2023-03-14
问题内容

我正在尝试构建MongoDB Java findAndModify查询。

主要目的是我想自己在插入查询中设置 _id

这是我的代码:

BasicDBObject findFilter = new BasicDBObject("type", "group")
//
BasicDBObject dialogInsertObject = new BasicDBObject("name", "my group").append("_id", new ObjectId());
//
BasicDBObject dialogUpdateObject = new BasicDBObject("name", "my group");
//
BasicDBObject upsertMap = new BasicDBObject();
upsertMap.append("$setOnInsert", dialogInsertObject);
upsertMap.append("$set", dialogUpdateObject);


DBObject dialogObject = dialogCollection.findAndModify(findFilter, 
   new BasicDBObject("_id", "1"), null, false, upsertMap, true, true);

我得到一个错误:

com.mongodb.CommandFailureException: { "serverUsed" : "localhost:27017" , 
  "errmsg" : "exception: Cannot update 'name' and 'name' at the same time" , 
  "code" : 16836 , "ok" : 0.0}

有人可以帮忙吗


问题答案:

这里的基本问题是:

db.collection.update(
   { "type": "group" },
   { 
      "$set": { "mygroup": "value" }
      "$setOnInsert" { "mygroup": "value" }
   }
)

基本上,这就是您要尝试执行的操作。

您不能在一个操作中与该操作寻址 相同的 字段。 $set $setOnInsert

逻辑中存在一个普遍问题,该错误会导致您遇到错误。



 类似资料:
  • 作曲家工作发现昨天,但今天后,我尝试安装:作曲家需要--beer-dist"himiklab/yii2-recaptcha-widget"*" 运行composer update命令时,显示错误: VirtualAlloc()失败:[0x00000008]VirtualAlloc()失败:[0x00000008]PHP致命错误:第84行的phar://C:/ProgramData/composeS

  • 我有几个虚拟机。它们都有桌面WPF应用程序和Outlook插件(基于插件Express)。都是用MIP SDK。今天,每次在2台虚拟机上使用MIP SDK时,Outlook加载项都开始出现错误。桌面应用程序仍然工作正常。 错误 我试过了 删除带有MIP缓存、日志记录等的存储文件夹 重启VM 但是问题仍然在发生。 我在网上找不到任何东西。 有人有什么想法吗? 环境 < li>Windows 10 P

  • 问题内容: 我正在尝试使用以下查询更新表 但是,出现以下异常: 错误代码:1175。您正在使用安全更新模式,并且尝试在不使用使用KEY列的WHERE的情况下更新表。要禁用安全模式,请在“首选项”->“ SQL查询”中切换选项,然后重新连接。 当我给子句提供类似的更新时,它更新了该特定内容。 有人可以指出为什么我无法执行查询以及如何解决该问题吗? 问题答案: 看一下: http://justalit

  • 我正在尝试使用以下查询更新表 但是,得到以下异常: 当我使用这样的更新给出子句时,它更新了该特定项。 有人能指出为什么我不能执行查询和如何解决这个问题吗?

  • 问题内容: 我已使用本教程创建了我的第一个docker webapi项目。 我正在使用Windows 7(Docker工具箱)。 这是我跑过的: 这是Dockerfile: 这是我创建图像的方式: 这就是我创建和运行容器的方式: 我的服务作为docker容器成功运行。 然后,我尝试更改Dockerfile以在aspnetcore基本映像上工作: 改为 新的Dockerfile如下所示: 现在,我尝

  • 问题内容: 我正在使用React Native开发一个简单的应用程序。我正在Android设备上对其进行测试。我创建了一个Node.js服务器来监听请求,该服务器运行在http:// localhost:3333 /上 。接下来,我要从index.android.js进行提取请求。下面是代码。 节点服务器上请求处理程序的代码如下 但是,获取请求无效。我在Chrome控制台中收到的错误是:TypeE