如何在多个条件下使用相同的参数
How to use the same parameter for multiple conditions
我正在尝试将具有多个字段的值与 Spring-Data-MongoDB 1.10.0 进行比较,我正在使用 @Query,因为嵌套文档是一个具有动态字段的对象.
但是,如果我在所有条件下都使用相同的标识符,如 ?5,则会出现错误:
exception="com.mongodb.util.JSONParseException:
{ companyType: "SPONSOR", companyId: 6710890, delivered: false, createdAt: { $gt: { "$date" : "2019-09-01T03:00:00.000Z"}, $lt: { "$date" : "2019-09-26T02:59:59.999Z"} }, $or:[ {requestPayload.sponsorGovernmentId: "73068519000185"}, {requestPayload.buyerGovernmentId: "73068519000185"5} ] }
我正在这样尝试:
@Query(value = "{ companyType: ?0, companyId: ?1, delivered: ?2, " +
"createdAt: { $gt: ?3, $lt: ?4 }, $or:[ {requestPayload.sponsorGovernmentId: ?5}, {requestPayload.buyerGovernmentId: ?5} ] }")
Page<WebHookDelivery> findByCompanyTypeAndCompanyIdAndDeliveredAndCreatedAtIsBetweenAndAnyKey(String companyType,
Integer companyId,
Boolean delivered,
Date createdAtStart,
Date createdAtEnd,
String governmentId,
Pageable pageable);
我只试过 ?和 [5].
是否可行,谁能解释一下如何做到这一点?
调试绑定过程后找到解决办法
我只需要在需要重复的参数中加上单引号,像这样:
"$or: [{ $or: [{ $or: [{ $or: [{ requestPayload.sponsorGovernmentId: ?5 }, " +
"{requestPayload.buyerGovernmentId: '?5'}] }, {requestPayload.supplierGovernmentId: '?5'}] }, " +
"{requestPayload.invoiceNumber: ?6}]}, {requestPayload.externalId: ?7}]
因此参数 5 可以多次使用。
我正在尝试将具有多个字段的值与 Spring-Data-MongoDB 1.10.0 进行比较,我正在使用 @Query,因为嵌套文档是一个具有动态字段的对象.
但是,如果我在所有条件下都使用相同的标识符,如 ?5,则会出现错误:
exception="com.mongodb.util.JSONParseException:
{ companyType: "SPONSOR", companyId: 6710890, delivered: false, createdAt: { $gt: { "$date" : "2019-09-01T03:00:00.000Z"}, $lt: { "$date" : "2019-09-26T02:59:59.999Z"} }, $or:[ {requestPayload.sponsorGovernmentId: "73068519000185"}, {requestPayload.buyerGovernmentId: "73068519000185"5} ] }
我正在这样尝试:
@Query(value = "{ companyType: ?0, companyId: ?1, delivered: ?2, " +
"createdAt: { $gt: ?3, $lt: ?4 }, $or:[ {requestPayload.sponsorGovernmentId: ?5}, {requestPayload.buyerGovernmentId: ?5} ] }")
Page<WebHookDelivery> findByCompanyTypeAndCompanyIdAndDeliveredAndCreatedAtIsBetweenAndAnyKey(String companyType,
Integer companyId,
Boolean delivered,
Date createdAtStart,
Date createdAtEnd,
String governmentId,
Pageable pageable);
我只试过 ?和 [5].
是否可行,谁能解释一下如何做到这一点?
调试绑定过程后找到解决办法
我只需要在需要重复的参数中加上单引号,像这样:
"$or: [{ $or: [{ $or: [{ $or: [{ requestPayload.sponsorGovernmentId: ?5 }, " +
"{requestPayload.buyerGovernmentId: '?5'}] }, {requestPayload.supplierGovernmentId: '?5'}] }, " +
"{requestPayload.invoiceNumber: ?6}]}, {requestPayload.externalId: ?7}]
因此参数 5 可以多次使用。