使用带有 Panache 的 MongoDB,您可以使用两种样式编写查询:
- PanacheQL,它是 JPQL(JPA 的查询语言)的子集,是一种非常接近 SQL 查询的 WHERE 子句的查询语言。
- 原生 MongoDB 查询,为了方便 JSON 可以用单引号代替双引号。
最简单的当然是 PanacheQL,在使用原生 MongoDB 查询时,您可以使用 MongoDB 查询语言的全部功能(但您需要编写 JSON 查询)。
如果您使用的是 PanacheQL,您可以通过将 DEBUG 日志级别设置为记录器来检查生成的查询,io.quarkus.mongodb.panache.runtime
如指南的查询调试中所述。
在指南上,有一些 PanacheQL 查询示例,如果您觉得应该添加更多,请打开一个增强请求,其中包含您想要添加的一些示例(甚至是 PR !)。
回答您有关查询的问题
我可以在 ?1 中对状态使用集合吗?
是的,这是支持的。
如何调试查询?
您可以启用查询日志记录,并直接在 MongoDB 上播放相同的查询(使用 mongo shell 或任何 MongoDB UI)。
有人可以为常见的运算符提供示例,如 AND、OR、IN、EQUALS、GREATER THAN、...?
简化查询部分有示例,我们提供了支持的运算符列表,其中包括 AND、OR(但不能同时使用)、IN、=、>=、<=、...所有的例子,但你可以找到很多 SQL WHERE 子句的例子。
这是一些样本(未经测试)
People.list("name = ?1 and country = ?2", "Doe", "France");
People.list("name = ?1 or country = ?2", "Doe", "France");
People.list("age >= ?1 or cage <= ?2", 10, 60);
People.list("country in ?1", List.of("France", "Germany"));
如何从代码中索引字段
如果您谈论自动创建 MongoDB 索引,则不支持。然而,有增强请求来支持它,或者更普遍地支持 MongoDB 数据库迁移。