Я пытаюсь получить данные из MongoDB, чтобы получить 5 самых популярных продуктов.
Но я получаю ошибку ниже.(MongoDB версия 3.2.21)
com.mongodb.MongoCommandException: команда завершилась с ошибкой 9: требуется опция «курсор», за исключением агрегирования с аргументом объяснения на локальном сервере: 27017.Полный ответ: {"ok": 0.0, "errmsg": требуется опция "курсор", за исключением агрегирования с аргументом объяснения "," code ": 9," codeName ":" FailedToParse "}
DBObject groupFields = groupFields = new BasicDBObject("_id", 0);
groupFields.put("_id", "$productId");
groupFields.put("avgRating", new BasicDBObject("$avg", "$productRvR"));
groupFields.put("productModelName", new BasicDBObject("$push", "$productMN"));
DBObject group = new BasicDBObject("$group", groupFields);
DBObject projectFields = new BasicDBObject("_id", 0);
projectFields.put("productId", "$_id");
projectFields.put("avgRating", "$avgRating");
projectFields.put("productModelName", "$productModelName");
DBObject project = new BasicDBObject("$project", projectFields);
DBObject sort = new BasicDBObject();
sort.put("avgRating",-1);
DBObject orderby=new BasicDBObject("$sort",sort);
DBObject limit=new BasicDBObject("$limit",5);
AggregationOutput aggregate userReviews.aggregate(group,project,orderby,limit);
LinkedHashMap<String, String> mostLikedProductsMap = new LinkedHashMap<String, String>();
for (DBObject queryResult : aggregate.results()) {
BasicDBObject obj = (BasicDBObject) queryResult;
BasicDBList productModelName = (BasicDBList) obj.get("productModelName");
mostLikedProductsMap.put((String)productModelName.get(0),obj.getString("avgRating"));
}
return mostLikedProductsMap;