Java – Spring Boot – MongoDB – Агрегация – AggregationOperation – объединение двух коллекций с использованием несколькихJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Java – Spring Boot – MongoDB – Агрегация – AggregationOperation – объединение двух коллекций с использованием нескольких

Сообщение Anonymous »

Я использую Java, Spring Boot, MongoDB.
У меня есть класс:

Код: Выделить всё

@Document("Master")
public class Master {
@Id
private String id;
private String code;
private String name;
private String companyCode;
private String version;
}
У меня есть еще один класс:

Код: Выделить всё

@Document("Child")
public class Child {
@Id
private String id;
private String code;
private String name;
private String companyCode;

private String masterCode;
private String masterVersion;
}
У меня есть функция агрегирования:

Код: Выделить всё

public Document testquery() {
ArrayList aggregationOperations = new ArrayList();
ProjectionOperation projection = Aggregation.project();
String companyCode = "23112";

Criteria criteriaCompanyCode = Criteria.where("companyCode").is(companyCode);
AggregationOperation newAggregationCompanyCode = Aggregation.match(criteriaCompanyCode);
aggregationOperations.add(newAggregationCompanyCode);

LookupOperation lookup1 = Aggregation.lookup("Child", "code", "masterCode", "l2");
aggregationOperations.add(lookup1);
UnwindOperation un = Aggregation.unwind("l2");
aggregationOperations.add(un);

ProjectionOperationBuilder partLynProcess_code = projection.and("companyCode");
projection = partLynProcess_code.as("Master_companyCode");
ProjectionOperationBuilder partLynProcess_code = projection.and("code");
projection = partLynProcess_code.as("Master_code");
ProjectionOperationBuilder partLynProcess_name = projection.and("name");
projection = partLynProcess_name.as("Master_name");
ProjectionOperationBuilder partLynProcess_version = projection.and("version");
projection = partLynProcess_version.as("Master_version");
ProjectionOperationBuilder partdataLynSolutionTask = projection.and("l2");
projection = partdataLynSolutionTask.as("l2");

aggregationOperations.add(projection);

Aggregation aggregation = Aggregation.newAggregation(aggregationOperations);

Document response = mongoTemplate.aggregate(aggregation, "Master", Object.class).getRawResults();
return response;
}
В приведенной выше функции дочерний элемент сопоставляется с главным только с использованием свойства «masterCode» дочернего элемента с «кодом» главного.
Я хочу сопоставить дочерний элемент с главным, используя следующие три:
свойство «masterCode» дочернего элемента с «кодом» главного,
свойство «companyCode» дочернего элемента с «companyCode». Master
и
свойство masterVersion дочернего элемента с версией Master.
Как я могу это сделать?

Подробнее здесь: https://stackoverflow.com/questions/783 ... in-between
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»