UpdateNodeModel替换mongodb java驱动程序中的现有文档 列表更新列表= 新的ArrayList(documents.size()); documents.stream().forEach((文档)->{ 添加(新的UpdateModel)( 新文档().append(“accountNum”, document.get(“accountNum”), 新文档().append(“$set”,Document)); }); BulkWriteResult=securitiesCollection.bulkWrite(updateList, MongoDbConstants.ORDERED\u OPTION\u FALSE);
在上面的代码中,我试图更新文档中的属性子集。更新后,我看到整个文档仅替换为子集。是否有一种方法可以使用mongo java驱动程序使用bulkwrite操作更新属性子集。如果只想更新某些字段,请不要设置整个对象:UpdateNodeModel替换mongodb java驱动程序中的现有文档 列表更新列表= 新的ArrayList(documents.size()); documents.stream().forEach((文档)->{ 添加(新的UpdateModel)( 新文档().append(“accountNum”, document.get(“accountNum”), 新文档().append(“$set”,Document)); }); BulkWriteResult=securitiesCollection.bulkWrite(updateList, MongoDbConstants.ORDERED\u OPTION\u FALSE);,mongodb,mongo-java,mongo-java-driver,Mongodb,Mongo Java,Mongo Java Driver,在上面的代码中,我试图更新文档中的属性子集。更新后,我看到整个文档仅替换为子集。是否有一种方法可以使用mongo java驱动程序使用bulkwrite操作更新属性子集。如果只想更新某些字段,请不要设置整个对象: List<WriteModel<Document>> updateList = new ArrayList<WriteModel<Document>>(documents.size()); do
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);
相反,设置您只需要的字段:
new Document().append("$set", document)));
UpdateModel更新正如预期的那样,我实际上是在向其他属性填充null值,这就是其他属性被更新为null的原因
new Document().append("$set", new BasicDBObject("field1",document.getField1()).append("field2", document.getField2());