UpdateOneModel заменяет существующий документ в jong-драйвере mongodb - PullRequest
0 голосов
/ 31 мая 2018
    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.

Ответы [ 2 ]

0 голосов
/ 31 мая 2018

UpdateOneModel обновляется, как и ожидалось, я на самом деле заполнял нулевые значения другими атрибутами, поэтому другие атрибуты обновлялись до нуля.

0 голосов
/ 31 мая 2018

Если вы хотите обновить только какое-то поле, не устанавливайте весь объект:

new Document().append("$set", document)));

Вместо этого установите поля, которые вам нужны только:

new Document().append("$set", new BasicDBObject("field1",document.getField1()).append("field2", document.getField2());
...