CouchDBを1回呼び出すだけで、特定のドキュメントのリストを照会したいと思います。
SQLで私は次のようなことをします
SELECT *
FROM database.table
WHERE database.table.id
IN (2,4,56);
CouchDBで、_id
または別のフィールドでこれを行うためのレシピは何ですか?
指定されたセットのキーを持つレコードを取得するには、viewskeys
クエリパラメータを使用する必要があります。
function(doc){
emit(doc.table.id, null);
}
その後
GET /db/_design/ddoc_name/_view/by_table_id?keys=[2,4,56]
ドキュメントのコンテンツを同時に取得するinclude_docs=True
には、リクエストにクエリパラメータを追加するだけです。
UPD:おそらく、この参照ID(2,4,56)でドキュメントを取得することに興味があるかもしれません。デフォルトでは、CouchDBは、発行されたキーとそれらが属するドキュメントを「マップ」します。この動作を微調整するには、リンクされたドキュメントのトリックを使用できます。
function(doc){
emit(doc.table.id, {'_id': doc.table.id});
}
そして今リクエスト
GET /db/_design/ddoc_name/_view/by_table_id?keys=[2,4,56]&include_docs=True
id
を保持するドキュメントを指すフィールド、キー、および2
参照4
されたドキュメントコンテンツを含む行を含む行を返します。56
doc
CouchDBでは、バルクドキュメントAPiはこれに使用されます。
curl -d '{"keys":["2","4", "56"]}' -X POST http://127.0.0.1:5984/foo/_all_docs?include_docs=true