Spring Data + ошибка недопустимой ссылки MongoDBJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Spring Data + ошибка недопустимой ссылки MongoDB

Сообщение Anonymous »

Вот мой код (данные Spring):

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

        MatchOperation matchOperation = Aggregation.match(new Criteria("stats.channelId").is(channelId));

UnwindOperation unwindOperation = Aggregation.unwind("stats");

GroupOperation groupOperation = Aggregation.group("id", "discordId")
.push("stats").as("stats");

AggregationOperation addFields = (AggregationOperationContext aggregationOperationContext) -> {
DBObject dbObject =
new BasicDBObject("allGamesOnChannel",
new BasicDBObject("$sum", "$stats.pickupsPlayed"));
return new BasicDBObject("$addFields", dbObject);
};

SortOperation sortOperation = Aggregation.sort(new Sort(Sort.Direction.DESC, "allGamesOnChannel"));
LimitOperation limitOperation = Aggregation.limit(maxElements);

ProjectionOperation projectionOperation = Aggregation.project("id", "discordId", "stats");

Aggregation aggregation = Aggregation.newAggregation(matchOperation,unwindOperation, matchOperation,groupOperation,addFields,
sortOperation,limitOperation,projectionOperation);

AggregationResults userSummaries = mongoTemplate.aggregate(aggregation, "pickupUser", UserSummaryChannel.class);
Я получаю это исключение при выполнении вышеописанного действия:

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

Caused by: java.lang.IllegalArgumentException: Invalid reference 'allGamesOnChannel'!
at org.springframework.data.mongodb.core.aggregation.ExposedFieldsAggregationOperationContext.getReference(ExposedFieldsAggregationOperationContext.java:99) ~[spring-data-mongodb-1.10.10.RELEASE.jar:na]
at org.springframework.data.mongodb.core.aggregation.ExposedFieldsAggregationOperationContext.getReference(ExposedFieldsAggregationOperationContext.java:80) ~[spring-data-mongodb-1.10.10.RELEASE.jar:na]
at org.springframework.data.mongodb.core.aggregation.SortOperation.toDBObject(SortOperation.java:73) ~[spring-data-mongodb-1.10.10.RELEASE.jar:na]
at org.springframework.data.mongodb.core.aggregation.AggregationOperationRenderer.toDBObject(AggregationOperationRenderer.java:56) ~[spring-data-mongodb-1.10.10.RELEASE.jar:na]
at org.springframework.data.mongodb.core.aggregation.Aggregation.toDbObject(Aggregation.java:580) ~[spring-data-mongodb-1.10.10.RELEASE.jar:na]
at org.springframework.data.mongodb.core.MongoTemplate$BatchAggregationLoader.prepareAggregationCommand(MongoTemplate.java:2603) ~[spring-data-mongodb-1.10.10.RELEASE.jar:na]
at org.springframework.data.mongodb.core.MongoTemplate$BatchAggregationLoader.aggregate(MongoTemplate.java:2585) ~[spring-data-mongodb-1.10.10.RELEASE.jar:na]
at org.springframework.data.mongodb.core.MongoTemplate.aggregate(MongoTemplate.java:1570) ~[spring-data-mongodb-1.10.10.RELEASE.jar:na]
at org.springframework.data.mongodb.core.MongoTemplate.aggregate(MongoTemplate.java:1511) ~[spring-data-mongodb-1.10.10.RELEASE.jar:na]
Выполнение агрегации без группировки:

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

Aggregation aggregation = Aggregation.newAggregation(matchOperation,addFields,
sortOperation,limitOperation,projectionOperation);
не выдает ошибок, поэтому я предполагаю, что возникла проблема с группировкой. Есть идеи, что я здесь делаю не так? Также я хочу отфильтровать список встроенных элементов, подсчитать сумму одного из свойств этих элементов и отсортировать на ее основе. Может быть, есть аналогичный способ сделать это?

РЕДАКТИРОВАТЬ
Итак, вот мой документ:

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

@Document
public class PickupUser {
@Id
private String id;
private String discordId;
private List stats;
private String name;
}
Встроенный объект:

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

@Data
@EqualsAndHashCode(exclude = {"pickupsPlayed", "caps"})
public class UserModeStats {
public UserModeStats() {}

private String mode;
private String channelId;
private Long pickupsPlayed;
private Long caps;
}
Выходной документ, который я хочу создать:

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

@Data
public class UserSummaryChannel {
public UserSummaryChannel() {}

private String id;
private String discordId;
private List stats;
//private Long allGamesOnChannel;
}
Я не хочу включать свойство allGamesOnChannel UserSummaryChannel(агрегация не работает ни с этим полем, ни без него).

Подробнее здесь: https://stackoverflow.com/questions/488 ... ence-error
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Xcode: ошибка недопустимой символической ссылки при попытке запустить приложение в симуляторе iOS
    Anonymous » » в форуме IOS
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Получение недопустимой ссылки — com. Thoughtworks.xstream.converters.ConversionException: неверная ссылка во время мигра
    Anonymous » » в форуме JAVA
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Ошибка недопустимой инструкции в AArch64 Linux с использованием AsmJit для довольно простого кода на C++
    Anonymous » » в форуме C++
    0 Ответы
    39 Просмотры
    Последнее сообщение Anonymous
  • Android Monhofit Post Type Data Data Wations Data Null Null
    Anonymous » » в форуме Android
    0 Ответы
    45 Просмотры
    Последнее сообщение Anonymous
  • Android Monhofit Post Type Data Data Wations Data Null Null
    Anonymous » » в форуме Android
    0 Ответы
    38 Просмотры
    Последнее сообщение Anonymous

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