我们已经升级(从 2.11.1)到
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>3.4.1</version>
现在当我们这样做时:
UpdateOptions options = (new UpdateOptions()).upsert(true);
BasicDBObject queryObject = new BasicDBObject("_id", newObject.get("_id"));
//where newObject.get("_id") returns "null", i.e. same as
//BasicDBObject queryObject = new BasicDBObject("_id", null);
UpdateResult result = collection.replaceOne(queryObject, newObject, options);
将插入一个“_id”设置为 null 的新文档(即使集合中先前不存在 _id 为 null 的对象)。当我们这样做时
collection.insertOne(newObject);
相反,会生成正确的“_id”。为什么“replaceOne”没有生成正确的_id?
这是预期的行为replaceOne
.
如果是,MongoDB 会将 _id 字段添加到替换文档中
过滤器或替换文件中未指定。如果 _id 是
两者都存在,值必须相等。
所以它使用_id
创建新文档时为 null。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)