Mongodb Criteria.orOperation 的 Spring Boot 不起作用
Springboot with Mongodb Criteria.orOperation doesn't work
我正在尝试使用 Spring-Boot 在 MongoDB 中使用条件创建一个 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
中搜索)。
如果我取消中间那一行的注释,它就不起作用了。我该如何解决?
实现为:
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")
);
我正在尝试使用 Spring-Boot 在 MongoDB 中使用条件创建一个 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
中搜索)。
如果我取消中间那一行的注释,它就不起作用了。我该如何解决?
实现为:
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")
);