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

Rub*_*con 5 java mongodb mongodb-java mongodb-query

我正在尝试构建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);
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

com.mongodb.CommandFailureException: { "serverUsed" : "localhost:27017" , 
  "errmsg" : "exception: Cannot update 'name' and 'name' at the same time" , 
  "code" : 16836 , "ok" : 0.0}
Run Code Online (Sandbox Code Playgroud)

请有人帮忙吗

Nei*_*unn 8

这里的基本问题是:

db.collection.update(
   { "type": "group" },
   { 
      "$set": { "mygroup": "value" }
      "$setOnInsert" { "mygroup": "value" }
   }
)
Run Code Online (Sandbox Code Playgroud)

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

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

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