【问题标题】:Using querydsl with undetermined schema with mongo and spring boot使用带有 mongo 和 spring boot 的未确定模式的 querydsl
【发布时间】:2018-11-20 12:20:58
【问题描述】:

我有以下映射:

@Document
class Event {
   Object carbonCopy; 
}

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

【问题讨论】:

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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    可以通过以下代码实现:

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

    【讨论】:

      猜你喜欢
      • 2020-01-18
      • 1970-01-01
      • 2019-06-14
      • 2018-09-20
      • 2020-11-25
      • 2017-09-02
      • 2014-05-11
      • 1970-01-01
      • 2021-06-10
      相关资源
      最近更新 更多