使用带有mongo和spring-boot的未确定模式的querydsl



我有以下映射:

@Document
class Event {
Object carbonCopy; 
}

carbonCopy有几个属性,其模式是不确定的——各种事件可以有不同的属性集。假设carbonCopy具有status字段。我需要找到carbonCopy.status等于NEW的所有Event。查询DSL是否可能,如何实现?我正在为PathExpression实例的各种混合而苦苦挣扎,但都无济于事。

您可以使用类似的在终端db.events.find({"carbonCopy.status":"NEW"})在短期内,如果你需要存在以及

db.events.find({carbonCopy.status:{"$exists":true}},"carbonCopy.status":"NEW"})

现在谈到SDM

Criteria criteria = Criteria.where("carbonCopy.status").is("NEW")

Query query = new Query(criteria);

return mongoTemplate.findOne(query, Event.class);

Criteria criteria = Criteria.where("carbonCopy.status").is("NEW").And("carbonCopy.status").exists(true) Query query = new Query(criteria); return mongoTemplate.findOne(query, Event.class);

使用以下代码是可能的:

QEvent event = QEvent.event;
PathBuilder<Event> query = new PathBuilder<Event>(Event.class, "entity");
BooleanExpression expr = query.getMap("objectCarbonCopy", String.class, String.class).get("status").eq(Expressions.constant("NEW"));

其中QEvent是querydsl生成的类。

最新更新