Java 直列视图定义数据库Ektorp
我在Spring 3中使用带Ektorp的沙发DB。我阅读了文档,并尝试实现示例。我对这些技术非常陌生。这是我不明白的一点:Java 直列视图定义数据库Ektorp,java,spring,nosql,couchdb,ektorp,Java,Spring,Nosql,Couchdb,Ektorp,我在Spring 3中使用带Ektorp的沙发DB。我阅读了文档,并尝试实现示例。我对这些技术非常陌生。这是我不明白的一点: @View( name = "all", map = "function(doc) { if (doc.type == 'Sofa' ) emit( null, doc._id )}") public class SofaRepository extends CouchDbRepositorySupport<Sofa> { @View( name =
@View( name = "all", map = "function(doc) { if (doc.type == 'Sofa' ) emit( null, doc._id )}")
public class SofaRepository extends CouchDbRepositorySupport<Sofa> {
@View( name = "avg_sofa_size", map = "function(doc) {...}", reduce = "function(doc) {...}")
public int getAverageSofaSize() {
ViewResult r = db.queryView(createQuery("avg_sofa_size"));
return r.getRows().get(0).getValueAsInt();
}
}
@View(name=“all”,map=“函数(doc){if(doc.type==“Sofa”)emit(null,doc.\u id)}”)
公共类SofaRepository扩展了couchdbrepository支持{
@查看(name=“avg\u sofa\u size”,map=“function(doc){…}”,reduce=“function(doc){…}”)
public int getAverageSofaSize(){
ViewResult r=db.queryView(createQuery(“平均大小”);
返回r.getRows().get(0.getValueAsInt();
}
}
WIEV如何工作以及如何定义它们,在这些行上会发生什么?
CouchDbRepositorySupport
开箱即用为SofaRepository提供了以下方法:
公共作废添加(Sofa实体);
公共空间更新(Sofa实体);
公共空间移除(Sofa实体);
公共沙发获取(字符串id);
公共沙发get(字符串id、字符串版本);
公共列表getAll();
公共布尔包含(字符串docId);
通过将此内联视图注释用于CouchDbRepositorySupport
:
@View(name=“all”,map=“函数(doc){if(doc.type==“Sofa”)emit(null,doc.\u id)}”)
您可以从getAll()
方法重新定义返回
您还将另一个方法getAverageSofaSize()
添加到您的存储库中,使用内联视图:
@View(name=“avg\u sofa\u size”,map=“function(doc){…}”,reduce=“function(doc){…}”)
它显式地提供了一个query
的db.queryView(createQuery(“avg_sofa_size”)代码>下标<代码>数据库
这是一个可以创建、删除、清除、查找等的数据库
请查看有关的更多文档,谢谢您的解释,我已经知道了。你能解释一下视图函数是如何工作的吗,比如emit方法?当然
emit
相当于map/reduce中的map
,它只是映射出以后可能要缩减的所有值/范围/数据。在这个[first function]示例中,它发出
s(将其视为返回
)类型为=='Sofa'的所有文档。你可以阅读更多关于它的文章