Мне нужно добавить поля (получить из пользовательского интерфейса), которые должны быть получены с помощью агрегации mongodb,
Из URI я получу param как поля, в которых есть разделенная запятыми строка полей
http://foo.com?fields=id,name
Документ выглядит следующим образом:
{
"_id" : "3a237c007a87d",
"name" : "Available",
"is_active" : true,
}
Ниже будет работать, как я хочу, и получить результат
Aggregation aggregation = newAggregation(
project(fields.contains("name") ? "name" : "",
fields.contains("id") ? "id" : ""),
fields.contains("is_active") ? "is_active" : ""),
skip((page-1)*limit),
limit(limit)
);
Приведенный выше запрос получает то, что я хочу, и его показано ниже
{
"_id" : "3a237c007a87d",
"name" : "Available"
}
Если я запускаю запрос ниже, я получаю хотя бы одно поле, которое нужно указать в проекте И код:
ProjectionOperation project = project();
for(String field : fields) {
project.andInclude(field);
}
, но поле не добавляется в projectionOperationесли для projectOperation необходимо иметь
{ "$project" : {"id":1, "name":1 } }
Aggregation aggregation = newAggregation(
project,
skip((page-1)*limit),
limit(limit)
);
The output need to be
{
"_id" : "3a237c007a87d",
"name" : "Available"
}
Я бы хотел избежать проверки того, содержит ли список поле, как они хотят в проекте.