Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
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 - Fatal编程技术网

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);

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

在上面的代码中,我试图更新文档中的属性子集。更新后,我看到整个文档仅替换为子集。是否有一种方法可以使用mongo java驱动程序使用bulkwrite操作更新属性子集。

如果只想更新某些字段,请不要设置整个对象:

    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());