java - 使用多列使用 spring-data-couchbase 查询 couchbase

标签 java couchbase couchbase-view spring-data-couchbase

我正在将 couchbase3 与 spring-data-couchbase 一起使用,并希望使用具有多列的 spring 数据存储库查询数据。

public interface UserAccountRepository extends CrudRepository<UserAccount, Long> {
public UserAccount findByEmail(Query eMail);
public UserAccount findByEmailAndStatus(Query query); // fn with multiple column, but not getting the result
}

Map函数和Reduce函数应该怎么写?

为了使函数 findByEmail(Query eMail); 正常工作,我添加了带有 Map fn() 的 View

function (doc, meta) {
  emit(doc.email,doc);
}

此 View 以电子邮件为键,值是文档。 但是如果我需要使用电子邮件和状态进行查询呢? View 应该是什么样子?

我看过这个链接,但不是很清楚。 https://stackoverflow.com/questions/28938755

最佳答案

我能够使 springdata 函数调用复合键 View 。 我的文档名称是:数据 复合键 View

function (doc, meta) {
  if(doc && doc._class == "com.couchbase.entity.Data"){
    emit([doc.key1, doc.key2], doc);
  }
}

SpringData Repository 接口(interface)如下所示:

package com.couchbase.repository;

import java.util.List;
import org.springframework.data.couchbase.core.view.View;
import org.springframework.data.repository.CrudRepository;
import org.springframework.data.repository.query.Param;
import com.couchbase.client.protocol.views.Query;
import com.couchbase.entity.Data;

public interface DataRepository extends CrudRepository<Data, String> {

    @View(designDocument="Data",viewName="findByKey1AndKey2")
    public List<Data> findByKey1AndKey2(Query query);
}

测试类如下所示:

import com.couchbase.client.protocol.views.ComplexKey;
import com.couchbase.client.protocol.views.Query;

public class DataTest extends WebAppConfigurationAware{

    @Autowired
    private DataRepository dataRepository;

    @Test
    public void testStringDataCompoundQuery(){
        Object[] objArr = new Object[2];
        objArr[0] = "aaa";
        objArr[1] = 1;

        Query query = new Query();
        query.setKey(ComplexKey.of(objArr));

        System.out.println(dataRepository.findByKey1AndKey2(query));

    }
}

如果对你有用,请点赞

关于java - 使用多列使用 spring-data-couchbase 查询 couchbase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31116690/

相关文章:

python - 使用 Couchbase 在给定半径内搜索文档

java - Couchbase View 为空

java - 字符串中 'x' 个字符的数量 - 递归

java - 超越圈复杂度的代码复杂度分析工具

node.js - Sails.js 的 Couchbase 适配器 "Sails-cbes"- ORM 加载失败

couchbase - 在GCE Docker下运行Couchbase并获取有关最大文件数的错误

couchbase - View 不会更新以添加之前被忽略的对象

java - 重写 hashCode() 方法

java - 远程 JMS 连接仍使用 localhost

couchbase - N1QL 使用连字符访问对象键