azure - cosmos db 无法使用 IN 查询,spring 数据原生查询和数组或集合(Java)
问题描述
我正在尝试为反应性存储库 spring 数据 cosmo DB 创建(使用 spring 本机查询)findAllId。因为对于 ReactiveCosmosRepository 没有实现。
@Query(value = " SELECT *\n" +
" FROM container_name km\n" +
" WHERE km.id IN (@ids) \n" +
" ORDER BY km.createdDate DESC ")
Flux<ContainerData> findAllById(@Param("ids") String[] ids);
甚至
@Query(value = " SELECT *\n" +
" FROM container_name km\n" +
" WHERE km.id IN (@ids) \n" +
" ORDER BY km.createdDate DESC ")
Flux<ContainerData> findAllById(@Param("ids") Iterable<String> ids);
但它没有检索任何结果,也没有抛出任何异常。
所以问题是,如何在 cosmos db 和开箱即用的集合或数组中使用 IN 运算符和 spring 数据本机查询,而无需采取变通方法。
解决方案
你应该使用array_contains
@Query(value = " SELECT *\n" +
" FROM container_name km\n" +
" WHERE array_contains(@ids, km.id, true) \n" +
" ORDER BY km.createdDate DESC ")
Flux<ContainerData> findAllById(@Param("ids") Iterable<String> ids);
推荐阅读
- c# - 从文本中获取一行的一部分作为字符串
- ios - 使用详细视图中的按钮浏览masterTableView,但当值大于/小于intableview的行数时按钮消失
- javascript - 使用 javascript 在 Web 应用程序上阻止网站
- python-3.x - TypeError: 'int' 对象在计算均值时不可迭代
- php - 通过浏览器超链接从 Linux Apache Webserver 访问远程 Windows 服务器文件
- ruby-on-rails - 从控制台调用 rails lib 任务
- java - 线程串行而不是并行运行
- dynamics-crm - 如何在 MS Dynamics CRM 实例中使用站点地图编辑器启用区域?
- html - FlowPlayer 与 Firefox 上的默认 HTML5 播放器重叠
- javascript - 在 Laravel 中将数据从 Blade 传递到模态