使用多列使用 spring-data-couchbase 查询 couchbase
querying couchbase with spring-data-couchbase, using multiple columns
我将 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()
的视图
function (doc, meta) {
emit(doc.email,doc);
}
此视图以电子邮件为键,值为文档。
但是如果我需要使用电子邮件和状态进行查询呢?视图应该是什么样子?
我看过这个link,但不是很清楚。
您可以使用此处文档中描述的复合键:http://docs.couchbase.com/developer/dev-guide-3.0/compound-keys.html
我能够使 springdata 函数调用复合键视图。
我的文档名称是:数据
复合键视图
function (doc, meta) {
if(doc && doc._class == "com.couchbase.entity.Data"){
emit([doc.key1, doc.key2], doc);
}
}
SpringData Repository Inferface 如下所示:
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);
}
测试Class如下所示:
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));
}
}
如果对您有用,请点赞
我将 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()
的视图function (doc, meta) {
emit(doc.email,doc);
}
此视图以电子邮件为键,值为文档。 但是如果我需要使用电子邮件和状态进行查询呢?视图应该是什么样子?
我看过这个link,但不是很清楚。
您可以使用此处文档中描述的复合键:http://docs.couchbase.com/developer/dev-guide-3.0/compound-keys.html
我能够使 springdata 函数调用复合键视图。 我的文档名称是:数据 复合键视图
function (doc, meta) {
if(doc && doc._class == "com.couchbase.entity.Data"){
emit([doc.key1, doc.key2], doc);
}
}
SpringData Repository Inferface 如下所示:
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);
}
测试Class如下所示:
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));
}
}
如果对您有用,请点赞