在线视图定义Couch Db Ektorp

时间:2011-10-12 13:49:51

标签: java spring nosql couchdb ektorp

我在Spring 3使用Couch DB和Ektorp。我阅读了文档,并试图实现示例。我对这些技术很陌生。这是我不明白的地方:

@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();
    }

}

这些wiev如何工作以及如何定义它们,在那条线上会发生什么?

1 个答案:

答案 0 :(得分:2)

开箱即用的

CouchDbRepositorySupport为SofaRepository提供了以下方法:

 
public void add(Sofa entity);
public void update(Sofa entity);
public void remove(Sofa entity);
public Sofa get(String id);
public Sofa get(String id, String rev);
public List<T> getAll();
public boolean contains(String docId);

CouchDbRepositorySupport提供此内联视图注释:

 
@View( name = "all", map = "function(doc) { if (doc.type == 'Sofa' ) emit( null, doc._id )}") 

您从getAll()方法重新定义了回报。

您还可以使用内联视图将另一个方法getAverageSofaSize()添加到您的存储库中:

 
@View( name = "avg_sofa_size", map = "function(doc) {...}", reduce = "function(doc) {...}")

明确提供query db.queryView(createQuery("avg_sofa_size")); underntad。 db这里有CouchDbConnector,可以创建,删除,清除,查找等。

查看有关defining in line Views

的更多文档