MongoTemplate Aggregation для подсчета количества различных идентификаторов продуктов - PullRequest
0 голосов
/ 06 марта 2019

Я пытаюсь получить количество различных product_id с помощью агрегации в springData.

документ выглядит примерно так

{
   {'product_id':1,
    'name' : hell
   }
   {
     'product_id':1,
     'name' : bajaj
   }
   {
     'product_id':2,
     'name':husky
   }
}

Я хочу вернуть подсчет переменных типа long.Это код, над которым я пытался работать, но я получаю сообщение о том, что не могу преобразовать список <> в длинный.

  Aggregation aggregation=newAggregation(match(criteria),group(FieldNames.PRODUCT_ID).count().as("count"),project("count"));

  return mongoTemplate.aggregate(aggregation,PriceMappedProduct.COLLECTION_NAME,long.class).getMappedResult();
.

1 Ответ

1 голос
/ 06 марта 2019

Вы близки, вы можете сделать это следующим образом, чтобы получить счет:

Вариант 1:

List<BasicDBObject> count = mongoTemplate.aggregate(aggregation,PristinePriceMappedProduct.COLLECTION_NAME,BasicDBObject.class).getMappedResult();

// mongoTemplate.aggregate is returning list hence the error.

if(count!=null){
    return count.size();
} else{
    return 0;
}

Вариант 2: (одинвкладыш)

return mongoTemplate.aggregate(aggregation,PristinePriceMappedProduct.COLLECTION_NAME,BasicDBObject.class).getMappedResult();
// in this case make sure this function's return type is Integer or Long not int or long

ПРИМЕЧАНИЕ: в этом случае убедитесь, что тип возвращаемого значения функции Integer или Long, а не int или long как int и long являются примитивными типами данных и не содержат null.Однако в случае отсутствия данных логика агрегирования может возвращать null, следовательно, использовать Long или Integer (объект может быть нулевым)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...