2011-10-12 9 views
0

私はSpring 3でEktorpでCouch DBを使用しています。私はこの文書を読んで、例を実装しようとしました。私はこれらの技術にはとても新しいものです。これは私が理解していなかった点である。インラインビューの定義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とそれらをどのように定義するには、何がそのラインで行わないことをどのように? CouchDbRepositorySupportのために、このインライン・ビュー注釈を有することにより

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); 

:箱から出し

答えて

2

CouchDbRepositorySupportはSofaRepositoryに以下のメソッドを提供

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

あなたはgetAll()メソッドからの戻りを再定義します。

ます。また、インラインビューで、リポジトリに方法getAverageSofaSize()を追加:明示的querydb.queryView(createQuery("avg_sofa_size"));そのundersntadを提供

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

。ここdb

は...など、見つける、削除、パージを作成することが可能であることを、私はそれを得たあなたの説明では約defining in line Views

+0

おかげCouchDbConnector以上のドキュメントを見てみましょうです。そのビュー関数がどのように動作するか、つまりemitメソッドの詳細を説明できますか? – kamaci

+0

'emit'はmap/reduceの' map'と等価です。ここでは後で減らすためにすべての値/範囲/データをマップしています。この[最初の関数]の例では、タイプ== 'Sofa'のすべてのドキュメントを 'emit'('返す 'と考える)します。 [CouchDB docs](http://wiki.apache.org/couchdb/Introduction_to_CouchDB_views#Map_Functions)で詳細を読むことができます。 – tolitius

関連する問題