我在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();
}
}wievs是如何工作的,如何定义它们,在这些行上发生了什么?
发布于 2011-10-12 23:22:49
开箱即用的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()方法返回的内容。
您还可以使用inline View将另一个方法getAverageSofaSize()添加到您的存储库:
@View( name = "avg_sofa_size", map = "function(doc) {...}", reduce = "function(doc) {...}")它显式地提供了db.queryView(createQuery("avg_sofa_size"));在which之下的query。这里的db是一个能够创建、删除、清除、查找等的CouchDbConnector。
查看有关defining in line Views的更多文档
https://stackoverflow.com/questions/7741129
复制相似问题