首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >多准则聚合

多准则聚合
EN

Stack Overflow用户
提问于 2020-06-12 09:02:02
回答 5查看 3K关注 0票数 0

我想使用多个标准来执行聚合。问题是我不知道如何通过多个标准。我是否像下面这样声明多个匹配操作?

代码语言:javascript
运行
复制
MatchOperation matchOperation1 = Aggregation.match(criteria);
MatchOperation matchOperation2 = Aggregation.match(criteria2);

如果是,那么如何将它们传递给聚合方法?我认为应该可以创建一个符合多种标准的MatchOperation,但我还没有在网上找到这样的例子。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2020-06-12 10:07:21

,我是否像下面这样声明多个匹配操作?

MatchOperation matchOperation1 =Aggregation.match(准则);MatchOperation matchOperation2 = Aggregation.match(criteria2);

Criteria类有一个and方法,它允许组合两个条件。例如,考虑以下三个文件:

代码语言:javascript
运行
复制
{ _id: 1, size: 10, color: "blue" }
{ _id: 2, size: 12, color: "red" }
{ _id: 3, size: 8, color: "blue" }

聚合match阶段的定义如下:

代码语言:javascript
运行
复制
Aggregation.match(Criteria.where("size").gt(new Integer(8))
                            .and("color").is("blue")
)

这将返回带有_id: 1的文档。

票数 1
EN

Stack Overflow用户

发布于 2020-06-12 10:47:59

你可以试试这样的东西

代码语言:javascript
运行
复制
final Criteria firstMatchCriteria = Criteria.where("fielname").is(someValue)
final Criteria secondMatchCriteria = Criteria.where("fielname").is(someValue)
final Aggregation aggregation = Aggregation.newAggregation(        match(firstMatchCriteria),unwind("FIELD_"),match(secondMatchCriteria),project())
票数 1
EN

Stack Overflow用户

发布于 2020-07-11 17:45:48

在需要动态筛选时,还可以在criteria中使用MatchOperation列表:

代码语言:javascript
运行
复制
List<Criteria> criterias = new ArrayList<>();
for (String key : mongoRequest.getFilterQuery().keySet()) {
                Criteria ci= new Criteria();
                List<Object> listOfValues=new ArrayList<>();
                for(Object value:mongoRequest.getFilterQuery().get(key)){
                    listOfValues.add(value);
                }
                ci = Criteria.where(key).in(listOfValues);
                criterias.add(ci);
           }
MatchOperation match =new MatchOperation(!criterias.isEmpty()?new Criteria().andOperator(criterias.toArray(new Criteria[criterias.size()])):new Criteria());

您还可以引用此链接link

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62340986

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档