我正在尝试使用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
中搜索。)
如果我取消注释中间线,它就不起作用。我该如何解决这个问题?
答案 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")
);