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操作中的相同字段.

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

相关文章

MongoTemplate 是Spring Data MongoDB 中的一个核心类,为 S...
笔者今天要分享的是一个项目重构过程中如何将数据库选型由原...
mongodb/mongoTemplate.upsert批量插入更新数据的实现
进入官网下载官网安装点击next勾选同意,点击next点击custom...
头歌 MongoDB实验——数据库基本操作
期末考试复习总结