如何使用空值查询文档MongoRepository Spring Data MongoDB

时间:2019-05-24 10:37:45

标签: spring spring-data spring-data-mongodb

我无法在Spring Data MongoDB中将值初始化为false,因此在查询中,我想搜索字段设置为false或null的文档。

以下代码段似乎无效:

@RestResource(rel = "findInactiveOrders", path = "findInactiveOrders")
Order findByIdAndIsActiveFalseOrIsActiveNull(@Param("id"))

1 个答案:

答案 0 :(得分:0)

我不确定您可以使用Spring数据方法名称来实现这种查询。由于您的查询将被评估为_id == "id" AND isActive == false OR isActive == null,而不是_id == "id" AND ( isActive == false OR isActive == null )

如果偶然isActive只能是truefalsenull,则可以尝试

@RestResource(rel = "findInactiveOrders", path = "findInactiveOrders")
Order findByIdAndIsActiveNot(@Param("id"), true)

否则,您将需要使用Spring数据mongodb提供的其他查询方法,例如MongoTemplate助手类或@Query注释。

@Query注释

@RestResource(rel = "findInactiveOrders", path = "findInactiveOrders")
@Query("{$and: [{'_id': :#{#id}}, $or: [{ 'isActive':false}, {'isActive': null}]]}")
Order findByIdAndIsActiveNot(@Param("id"))