Java 将字符串数组添加到MongoDB中的ProjectionOperation
我需要添加需要使用mongodb聚合获取的字段(从ui获取) 从uri中,我将获取参数作为字段,该字段具有逗号分隔的字段字符串Java 将字符串数组添加到MongoDB中的ProjectionOperation,java,mongodb,spring-boot,spring-mongodb,Java,Mongodb,Spring Boot,Spring Mongodb,我需要添加需要使用mongodb聚合获取的字段(从ui获取) 从uri中,我将获取参数作为字段,该字段具有逗号分隔的字段字符串 http://foo.com?fields=id,name 文档如下所示: { "_id" : "3a237c007a87d", "name" : "Available", "is_active" : true, } 以下内容将根据我的需要工作并产生结果 Aggregation aggregation = newAggregation
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);
}
但该字段没有添加ProjectOnOperation
如果项目运作需要有
{ "$project" : {"id":1, "name":1 } }
Aggregation aggregation = newAggregation(
project,
skip((page-1)*limit),
limit(limit)
);
The output need to be
{
"_id" : "3a237c007a87d",
"name" : "Available"
}
我喜欢避免检查列表中是否包含他们希望在project中包含的字段。是否可能只是混淆了一些变量(
fields
vsfieldList
)?此外,还需要使用和include()调用的返回值,请尝试以下操作:
List<String> fieldList = new ArrayList<>();
fieldList.add("id");
fieldList.add("name");
ProjectionOperation project = project();
for(String field : fieldList) { // note that I'm using 'fieldList' here
project = project.andInclude(field);
}
List fieldList=new ArrayList();
字段列表。添加(“id”);
字段列表。添加(“名称”);
ProjectionOperation项目=项目();
对于(stringfield:fieldList){//注意,我在这里使用的是'fieldList'
项目=项目,包括(现场);
}