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

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和正确的invoiceNumber,则查询应该给我结果。

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

最佳答案

假设您正在使用Java和SpringBoot。
不需要在查询中的变量周围加上“'”单引号,如果添加它们,则会在执行查询时产生错误。应该简单->

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

10-07 17:12