使用 Quarkus 进行复杂 mongodb 查询
Complex mongodb query with Quarkus
我需要将 Spring 引导项目迁移到 Quarkus。该项目一直在使用 Spring 数据 Mongodb 进行所有查询。现在我发现很难迁移复杂的查询。
一个例子是
public List<MyData> findInProgressData(MyConditions conditions) {
Query mongoQuery = new Query();
mongoQuery.addCriteria(Criteria.where("status").is(IN_PROGRESS));
mongoQuery.addCriteria(Criteria.where("location").is(conditions.getLocationCode()));
if (StringUtils.isNotBlank(conditions.getType())) {
mongoQuery.addCriteria(Criteria.where("type").is(conditions.getType()));
}
if (StringUtils.isNotBlank(conditions.getUserId())) {
mongoQuery.addCriteria(Criteria.where("userId").is(conditions.getUserId()));
}
mongoQuery.with(Sort.by(Sort.Direction.ASC, "createdAt"));
return mongoTemplate.find(mongoQuery, MyData.class);
}
如何使用 Quarkus 实现条件查询?
你或许可以试试 Panache with Mongodb。
您可以将 Document
传递给 .find()
方法,在此对象中您可以指定任何条件。
final Document document = new Document();
document.put("status","IN_PROGRESS");
...
result = MyData.find(document); // or MyDataRepository
但是您需要调整一些代码以适应 Panache,这可以通过扩展 PanacheEntity
或 PanacheEntityBase
来完成
我需要将 Spring 引导项目迁移到 Quarkus。该项目一直在使用 Spring 数据 Mongodb 进行所有查询。现在我发现很难迁移复杂的查询。
一个例子是
public List<MyData> findInProgressData(MyConditions conditions) {
Query mongoQuery = new Query();
mongoQuery.addCriteria(Criteria.where("status").is(IN_PROGRESS));
mongoQuery.addCriteria(Criteria.where("location").is(conditions.getLocationCode()));
if (StringUtils.isNotBlank(conditions.getType())) {
mongoQuery.addCriteria(Criteria.where("type").is(conditions.getType()));
}
if (StringUtils.isNotBlank(conditions.getUserId())) {
mongoQuery.addCriteria(Criteria.where("userId").is(conditions.getUserId()));
}
mongoQuery.with(Sort.by(Sort.Direction.ASC, "createdAt"));
return mongoTemplate.find(mongoQuery, MyData.class);
}
如何使用 Quarkus 实现条件查询?
你或许可以试试 Panache with Mongodb。
您可以将 Document
传递给 .find()
方法,在此对象中您可以指定任何条件。
final Document document = new Document();
document.put("status","IN_PROGRESS");
...
result = MyData.find(document); // or MyDataRepository
但是您需要调整一些代码以适应 Panache,这可以通过扩展 PanacheEntity
或 PanacheEntityBase