首页 > 解决方案 > 如何使用 Spring 数据 CouchbaseTemplate 执行动态 n1ql 查询

问题描述

我正在将 spring data couchbase 迁移到 4.*

在以前的版本中,我曾经执行如下动态 N1Ql 查询

N1qlQueryResult result = couchbaseTemplate.queryN1QL(N1qlQuery.simple(complexStringQuery));

现在通过升级,我看到 queryN1QL 已被删除,我们应该使用 findByQuery。但是 findByQuery 不接受字符串查询。

如何使用较新的 spring data couchbase 版本来实现这一点。

谢谢您的帮助

标签: javacouchbasespring-data-couchbase

解决方案


因为 Couchbase 6.6 和 7 添加了对范围和集合的支持,所以查询被移动到集群/存储桶级别:

@Autowired
private Cluster cluster;

@Autowired
private Bucket bucket;

...

    cluster.query(N1qlQuery.simple("Select * From myBucket",
            N1qlParams.build().consistency(ScanConsistency.REQUEST_PLUS))).allRows();

    //or
    
    bucket.query(N1qlQuery.simple("select * from Buckey")).allRows();

推荐阅读