使用Mongodb Criteria.orOperation的Springboot不起作用

时间:2016-10-05 18:21:21

标签: mongodb spring-boot aggregation-framework spring-data-mongodb mongodb-aggregation

我正在尝试使用Spring-Boot在MongoDB中使用Criteria创建一个OR操作,这是我的代码:

TypedAggregation<Ficha> agg = newAggregation(Ficha.class,    
   // match(Criteria.where("parte.nome").regex(".*"+ query+".*")),
   // match(Criteria.where("parte.nome").regex(".*"+ query+".*").orOperator(Criteria.where("parte.documentos.numero").regex(".*"+ query+".*"))),
   // match(Criteria.where("parte.documentos.numero").regex(".*"+query+".*")),
   group("parte.nome").first("parte.nome").as("nome"),
   project().and("nome").previousOperation().and("nome").as("nome")

如果我取消注释第1行,它就有效(仅在parte.nome中搜索)。

如果我取消注释最后一行,它也能正常工作(但只能在parte.documentos.numero中搜索。)

如果我取消注释中间线,它就不起作用。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

将其实施为:

TypedAggregation<Ficha> agg = newAggregation(Ficha.class,    
   match(new Criteria().orOperator(
        Criteria.where("parte.nome").regex(".*"+ query+".*"),
        Criteria.where("parte.documentos.numero").regex(".*"+ query+".*")
    )),  
   group("parte.nome").first("parte.nome").as("nome"),
   project().and("nome").previousOperation().and("nome").as("nome")
);