DocumentDb - весна - обновить поле с другим значением поля - PullRequest
1 голос
/ 28 октября 2019

Я использую 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, а не с именем поля.

...