微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – findAndModify失败并显示错误:“无法同时更新’field1’和’field1′

我正在尝试构建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" }
   }
)

这基本上就是你想要做的.

您不能在$setonInsert操作中处理$set操作中的相同字段.

逻辑中存在导致您遇到的错误的一般问题.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐