Я использую DocumentDb из Spring и хочу создать updateMany для поля со значением другого поля.
Следующий запрос работает в консоли MongoDb:
db.mtpProject.update({}, [{$set: {"fieldToBeUpdated": "$myCurrentField"}}]).
Если я удаляю [] перед $ set, поле обновляется не со значением myCurrentField, а со строкой «myCurrentField».
в Java. Я пытаюсь выполнить его следующим образом:
MongoDatabase db = mongoTemplate.getDb();
MongoCollection collection = db.getCollection("myProject");
collection.updateMany(new Document(), new Document("$set", new
Document("fieldToBeUpdated", "$myCurrentField")));
Но поскольку он создается без массива, он просто устанавливает значение fieldToBeUpdated в "$ myCurrentField".
Я упомянул, что я пытался также использовать $ addFields с $ out, но $ out не поддерживается DocumentDb.
Aggregation agg =
Aggregation.newAggregation(
aoc ->
new Document(
"$addFields",
new Document("fieldToBeUpdated", "$myCurrentField")),
aoc -> new Document("$out", "myProject"));
mongoTemplate.aggregate(agg, "myProject", MyProject.class);
Я хотел бы обновить поля со значениями, сохраненными в myCurrentField, а не с именем поля.