我们当前的实现与mongo-java-driver:3.0.4
为一个文件更新如下-
private void updateParam(String param1, String param2) {
Param param = new Param(param1, param2);
DBCollection collection = mongoClient.getDB("databaseName").getCollection("collectionName");
collection.save(new BasicDBObject(param.toMap()));
}
其中param.toMap()
被实现为
public Map<String, Object> toMap() {
return JSONObjectMapper.getObjectMapper().convertValue(this, Map.class);
}
随着mongo-java-driver:3.4.0-rc1
我试图执行使用insertOne
作为
private void updateParam(String param1, String param2) {
Param param = new Param(param1, param2);
MongoCollection<Param> mongoCollection = mongoClient.getDatabase("databaseName").getCollection("collectionName", Param.class);
mongoCollection.insertOne(param);
}
考虑到来自源的信息DBCollection的保存
- 如果文档不与指定的“_id”值存在,则该方法执行与文档中的指定字段中的插入件。
- 如果文档具有指定“_id”值存在,则该方法执行更新,替换与从文档字段现有记录所有字段。
但我怀疑insertOne现在执行我使用它作为对同样的效果save()
以前。
插入提供文件。 如果文档丢失的标识符,司机应该产生一个
的问题 -是否有任何方式的类似save()
与当前MongoCollection
方法? 有没有办法使用的方式_id
的Param
或做不使用它,以及类似的东西?
编辑:帕拉姆被定义为-
public class Param {
private String param2;
private String param2;
public Param() {
}
public Param(String param1, String param2) {
this.param1 = param1;
this.param2 = param2;
}
public Map<String, Object> toMap() {
return JSONObjectMapper.getObjectMapper().convertValue(this, Map.class);
}
}
并具有ParamCodec implements Codec<Param>
这是使用登记CodecRegistry
如下到客户端:
CodecRegistry codecRegistry = CodecRegistries.fromRegistries(MongoClient.getDefaultCodecRegistry(),
CodecRegistries.fromCodecs(new ParamCodec()));
MongoClientOptions clientOptions = new MongoClientOptions.Builder()
....
.codecRegistry(codecRegistry)
.build();
MongoClient(addresses, clientOptions);