3

私はCouchDBを初めて使用し、非常に基本的な質問があります:

クライアントからマップ関数に変数を渡す可能性はありますか?

function (doc, params) {
    if (doc.property > params.property) emit(doc, null);
}

助けてくれてありがとう、クリスチャン

4

2 に答える 2

2

いいえ、マップ関数は、常に同じ入力を受け取り、同じ出力を生成するインデックスを作成することになっているため、増分を維持できます。(そして速い)

ビューの結果に対して何らかのフィルタリングを行う必要がある場合は、関数の使用を検討してください。_list関数を使用すると、クライアントから提供されたクエリ文字列変数を取得して、それらを変換に使用できます。

于 2012-07-09T16:16:12.930 に答える
2

ドミニクの答えは正しいですが、実際の質問の例は、適切なキーとstartkey. したがって、例に示す機能が必要な場合は、ビューを次のように変更する必要があります。

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

そして、クエリは次のようになります。

/db_name/_design/view_doc/_view/view_name?startkey="property_param"&include_docs=true

これは、あなたの例があなたが求めていることを示唆しています。

keyこれは、CouchDB を操作するための鍵です (駄洒落は面白いです): 、またはおよび/またはkeysの組み合わせを使用して、キーに基づいてビューのサブセットを選択できるビューを作成します。startkeyendkey

于 2012-07-09T23:33:38.280 に答える