Добавить новое поле в каждый документ в Mongo Collection через Java

Как я могу добавить новое поле в каждый документ в существующей коллекции?

Это то, что я пробовал до сих пор

MongoClient mongo = new MongoClient("localhost", 27017);
DB db = mongo.getDB("myDB");
DBCollection collection = db.getCollection("myCollection");
DBObject test = new BasicDBObject();
DBObject add = new BasicDBObject();
add.put("xxx", "newField");
collection.update(add, test);

person G.Brown    schedule 03.07.2019    source источник


Ответы (1)


Вы должны использовать обновление multi:

    DBObject queryAll = new BasicDBObject();
    DBObject newValue = new BasicDBObject("xxx", "newField");
    DBObject update = new BasicDBObject("$set", newValue);
    collection.updateMulti(queryAll, update);
person HPCS    schedule 03.07.2019
comment
Использовал ваш код, но новое поле не добавляется ко всем jsons - person G.Brown; 03.07.2019
comment
это приложение к некоторым документам? или вообще нет? - person HPCS; 03.07.2019
comment
Код кажется правильным, но это вовсе не добавление поля в json - person G.Brown; 03.07.2019
comment
Возвращает ли collection.find() какие-либо документы? - person HPCS; 03.07.2019
comment
Если я использую цикл for в этом контексте, все будет переопределено последним значением. Как вы думаете, есть ли способ обновить их один за другим? - person G.Brown; 03.07.2019
comment
Я не уверен, понимаю ли я, что вы имеете в виду. Можете ли вы отправить код? Если вы используете цикл, не используйте updateMulti, используйте только обновление. Это обновит только один документ, найденный запросом. - person HPCS; 03.07.2019