2012-03-12 9 views
1

私はCouchDBをクエリしたいと思います。私のクエリは、この条件に対応するドキュメントの名前フィールドを返す必要があります:idが等しいか、またはファイルされたドキュメント(リスト) 。 は、例えば、フィールドの出力は以下の通りです:CouchDBのビュー - リスト内のキー

"output": [ 
     "doc_s100", 
     "doc_s101", 
     "doc_s102", 
     "doc_s103", 
    ], 

私は、例えば、それらの出力フィールド「doc_s102」にあるすべての文書を取得したいです。私は、設計文書のビューを書いた :

"backward_by_docid": { 
      "map": "function(doc) {if(doc.output) emit(doc.output, doc.name)}" 
     } 

をしかし、このビューは、私は、出力フィールドの一意の値を持っているときにのみ機能します。 このクエリを解決するにはどうすればよいですか?

ありがとうございます!

答えて

2

あなたは、配列を反復処理する必要があります。

if(doc.output) { 
     for (var curOutput in doc.output) { 
     emit (doc.output[curOutput],doc.name); 
     } 
    } 

出力は常に配列(少なくとも[])

であることを確認してください...と、もちろんのではなく、キー=「XX」を使用キー= ["xxx"]

+0

答えに感謝、それは動作します!これのために+1 – user162284

+0

+1。 私のために働いた。ありがとうございました。 – Vida

関連する問題