List<WriteModel<Document>> updateList =
new ArrayList<WriteModel<Document>>(documents.size());
documents.stream().forEach((document) -> {
updateList.add(new UpdateOneModel<Document>(
new Document().append("accountNum",
document.get("accountNum")),
new Document().append("$set", document)));
});
BulkWriteResult result = securitiesCollection.bulkWrite(updateList,
MongoDbConstants.ORDERED_OPTION_FALSE);
在上面的代码中,我试图更新文档中的属性子集。更新后,我看到整个文档仅替换为子集。有没有办法使用mongo-java-driver使用bulkwrite操作更新属性的子集。
答案 0 :(得分:0)
如果您只想更新某个字段,请不要设置整个对象:
new Document().append("$set", document)));
相反,只需设置您需要的字段:
new Document().append("$set", new BasicDBObject("field1",document.getField1()).append("field2", document.getField2());
答案 1 :(得分:0)
UpdateOneModel按预期更新,我实际上将空值填充到其他属性,这就是其他属性被更新为null的原因。