首页 文章

从键返回couchbase文档

提问于
浏览
0

我想根据使用spring-data-couchbase的列表集合检索存在的所有文档

目前我正在使用

public interface PushRepository extends CrudRepository<Push,String>

和函数 pushRepository.findAll(phoneNumbers) 但我认为它正在检索所有这些,然后进行过滤 .

如何运行N1QL查询,以便我只检索密钥上的文档

@Query("#{#n1ql.selectEntity} WHERE role = 'admin' AND #{#n1ql.filter}")
 Collection<Push> findByIds();

我想运行的查询如下

select * from activation use keys ["xxxxx","yyyyy"];

1 回答

  • 0

    findAll(Iterable) 使用底层视图(它应该仅索引与您的 Push 实体对应的文档),但它确实提供了要限制的视图键,因此它应该已经非常高效 .

    也就是说,如果你想做一个直接使用文档密钥的N1QL查询,那么 @Query 肯定是可行的 . 由于您直接使用键,因此不需要WHERE子句(您知道键对应于 Push 文档) . 所以你可以简单地做一个这样的内联查询:

    @Query("#{#n1ql.selectEntity} USE KEYS [\"xxxxx\", \"yyyyy\"]")
    Collection<Push> myCustomFind();
    

    如果你想动态构建密钥列表,你必须查找正确的语法,但我敢打赌这是可行的使用SpEL . 例如,从查询签名中的方法参数中获取两个键可以这样做:

    @Query("#{#n1ql.selectEntity} USE KEYS [\"#{[0]}\", \"#{[1]}\"]")
    Collections<Push> findTwoByN1qlKey(String key1, String key2);
    

相关问题