cosmos db 无法使用 IN、spring 数据本机查询和数组或集合 (Java) 进行查询

cosmos db cannot query using IN, spring data native query and array or collection(Java)

我正在尝试创建(使用 spring 本机查询)反应存储库 spring 数据 cosmo DB 的 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);