【发布时间】:2018-05-17 06:55:34
【问题描述】:
查看其他关于如何使用 mongodb 和参数 inpu 作为列表进行可选参数查询的帖子,我发现它可以通过以下方式完成:
@Query("{ $or : [ { $where: '?0 == null' } , { field : ?0 } ] }")
List<Something> findAll(String query, Pageable pageable);
我的查询如下所示:
@Query("{ $or : [ { $where: '?3 == null' } ,{ input1 : { $in : ?3 } }], 'input2' : ?4 , 'input3' : ?2 ,'dateInput' : {$gt : ?0, $lte : ?1}}")
List<Entities> findThingsbyInputs(Long initialDate, Long endDate, Integer Input2, List<Integer> input1, Integer input3);
当我使用此查询和 Input1 = ?0 = ArrayList 时,如果列表不为空,它会很好地工作,但当 ?0 为空时,会引发异常。我可以用列表查询几个输入参数,但是当为空时,它不起作用。
错误信息是: 查询失败,错误代码 2 和服务器 localhost:27017 上的错误消息“$in 需要一个数组”
有什么帮助吗?并提前感谢
【问题讨论】:
标签: java mongodb spring-data optional-parameters