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

问题描述 投票:0回答:1

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

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} ]}")

如果我传递了不正确的SponsorGovernmentId和正确的发票编号,则查询应给我结果。

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

java spring spring-data-mongodb
1个回答
0
投票
假设您正在使用Java和SpringBoot。不需要在查询中的变量周围加上“'”单引号,如果添加它们,则会在执行查询时产生错误。应该只是->
© www.soinside.com 2019 - 2024. All rights reserved.