1

こんにちは、私は CouchDB を初めて使用しますが、これまでのところ素晴らしいように見えますが、簡単に行う必要があることに本当に苦労しています!

次のような構造のドキュメントがあります。

{
   "_id" : "245431e914ce42e6b2fc6e09cb00184d",
   "_rev": "3-2a69f0325962b93c149204aa3b1fa683",
   "type": "student",
   "studentID": "12345678",
   "Name": "Test",
   "group: "A"
}

http://couchIP/student?group=Aそして、またはそのようなクエリでそれらにアクセスしたいと思います。ここで必要なのはビューですか? ビューの Map 関数でクエリからパラメーターを取得する方法がわかりません。例:

function(doc,req) {
   if(req.group==='A'){
        emit(doc.id, doc.name);
   } 
}

Couch がどのように機能しているのか、またはここで何が問題なのかについての私の理解はありますか? 前もって感謝します。これは Couch 101 であると確信しています。

すでにhttp://guide.couchdb.org/を読んでいますが、実際には質問に答えていません!

4

3 に答える 3

1

あなたの質問は、 a が何をするかについての誤解から生じてviewいます。ビューmap/reduceは、データの表現を生成するために使用します。ビューは DB ドキュメントの変更のみに応じて更新されるため、クエリでビューの出力を制御することはできません。

a の使用listも適切なオプションではありません。リクエストの知識を使用して、クエリ パラメータに応じて異なる出力を生成できるように見えるかもしれませんがlist、これは誤りです。これは、couchdb がETagsキャッシュに使用するためです。これは、ほとんどの場合、リスト パラメータに関係なく同じ回答が得られることを意味します。基になるドキュメントは変更されません。ただし、この場合、couchdb をだますトリックがあります。これは、2 人の異なるユーザーを交互に使用することを意味しますが、目的を達成するためのより簡単な方法が確かにありgroup、キーとして使用して問題を解決できる可能性があるため、この方法を試すことさえしません。あなたの地図機能。

于 2013-02-03T20:21:55.550 に答える
1

ビューと、それらがキー/ペアの値を返すことの関連性について、さらに読む必要があります。

ビューから何を返したいのかはっきりしないので、推測します。ドキュメント全体を返したい場合は、次のようなビューを作成します。

function (doc) { emit(doc.group, doc) };

これにより、検索できるキーとしてグループ名が出力され、検索するとドキュメント全体が値として返されます。

これらのユーザーの名前にアクセスしたい場合は、次のようにします。

function (doc) { emit(doc.group, doc.name) };
于 2013-02-02T18:13:51.680 に答える
1

望ましい結果を得るにはビューが必要です。

設計ドキュメントのビュー内で次の map 関数を定義します。(ビューに「byGroup」という名前を付け、これが「_design/students」という名前のデザイン ドキュメントにあると仮定します)

function(doc) {
   if(doc.group){
    emit(doc.group,null);
   } 
}

結果は以下のURLから取得できます

http://couchIP:5984/dbname/_design/students/_view/byGroup?startkey="A"&endkey="A"&include_docs=true

フレンドリな URL を持つために、couchdb は URL 書き換えオプションも提供します。

于 2013-02-04T05:21:06.290 に答える