在mongo和spring boot中使用带有不确定模式的querydsl

时间:2018-11-20 12:20:58

标签: java mongodb spring-boot spring-data-mongodb querydsl

我有以下映射:

@Document
class Event {
   Object carbonCopy; 
}

carbonCopy具有多个属性,并且其架构不确定-各种事件可以具有不同的属性集。假设carbonCopy具有status字段。我需要找到所有Event等于carbonCopy.status的{​​{1}}。查询DSL是否可能,如何?我在NEWPath实例的各种混合中挣扎,无济于事。

2 个答案:

答案 0 :(得分:2)

您可以使用类似 在终端  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);

答案 1 :(得分:0)

使用以下代码是可能的:

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生成的类。