我正在尝试构建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 举报,一经查实,本站将立刻删除。