如何在 Spring-Data-MongoDB 中使用 @Query 组合 AND 和 OR 子句?



我正在尝试创建这样的查询:

SELECT * FROM webHookDelivery 
WHERE companyType = 'SPONSOR'
AND companyId = 6710890
AND eventType = 'CustodyResponseItemEvent'
AND delivered = false
AND (requestPayload.sponsorGovernmentId = '1234' OR requestPayload.invoiceNumber = '82899') 
ORDER BY createdAt DESC

使用Spring-Data-MongoDB@Query注释,但不起作用,而且参数也是可选的。

我尝试了很多不同的查询,最后一个是这样的:

@Query(value = "{ 'companyType': ?0, 'companyId': ?1, 'eventType': ?2, 'delivered': ?3, '$or':[ {'requestPayload.sponsorGovernmentId': ?4}, {'requestPayload.invoiceNumber': ?5} ]}")

如果我传递了不正确的发起人政府 ID 和正确的发票编号,查询应该会给我结果。

有人可以解释我做错了什么吗?

假设你使用的是Java和SpringBoot。 查询中的变量不需要"'"单引号,如果添加它们,则在执行查询时会出现错误。 它应该只是 ->

@Query(value = "{ companyType: ?0, companyId: ?1, eventType: ?2, delivered: ?3, $or:[ {requestPayload.sponsorGovernmentId: ?4}, {requestPayload.invoiceNumber: ?5} ]}")

最新更新