ドキュメント内のいくつかのフィールドがキーリクエストに一致するワイルドカードになるようにCouchDBを照会しようとしています。CouchDBキーは常に一致します
例:
function(doc) {
emit(doc.some_field, doc);
}
?key=100
はおよび*等some_field値のsome_fieldとドキュメントの両方が一致します。
これは可能ですか?それを行うためのハックはありますか? CouchDBのwikiから
ドキュメント内のいくつかのフィールドがキーリクエストに一致するワイルドカードになるようにCouchDBを照会しようとしています。CouchDBキーは常に一致します
例:
function(doc) {
emit(doc.some_field, doc);
}
?key=100
はおよび*等some_field値のsome_fieldとドキュメントの両方が一致します。
これは可能ですか?それを行うためのハックはありますか? CouchDBのwikiから
:
CouchDBのが実際 Bツリーでキーとして [キー、DOCID]ペアを格納します。
- あなたは常にキーと値は、(それがビューの結果における「ID」フィールドとして公開されています)ソートDOCIDを増加させることにより、同じキーを持つ
- ビューの行から来た文書化され知っている:これは、ことを意味します。
だから私は、彼らがソートされているので、キーの一部として使用されるワイルドカードのフィールドが可能であることとは思いません。それらが可能であると仮定してください。次に、ビューからキー範囲を照会しようとすると、任意のキー範囲でワイルドカードを含む行が返されます。それは彼らがどこにいても意味します。しかし、ソートされているので不可能です。これはワイルドカードを持つ行で、他の行のうちの1つは大きなキーを持ち、もう1つは小さいものです。
?startkey="key"&endkey="key\ufff0"
をキー *に一致するように:CouchDB documentationあなたが行うことができますあたりのよう
。
質問を正しく理解すれば、ワイルドカードを含むクエリではありません。彼はキーの中にワイルドカードを持つためにビューの行を必要とします。 OT:couchdbなどでの作業に感謝します:) – ssmir
右に、データベースに格納されているワイルドカードキーに一致するキーが必要です。私はそれがおそらく奇妙に思えるかもしれません...しかし、パッケージマネージャーは、X、Y、Zのシステムプロパティ用にコンパイルされたすべてのパッケージを尋ねることができますが、いくつかのパッケージは汎用であり、XとYでは一致しますが、ただし、*のような一般的なフィールドがあります。 –
ああ、申し訳ありませんが、私は当時の質問を誤解しました。POSTボディが次のように見える場合は、ビューに対するPOSTリクエストを使用して、多くのキーの論理ORを取得できます。 '{" keys ":" key2 "、...}}' http: /wiki.apache.org/couchdb/HTTP_view_API –
ええ、どういうわけかORをやることがあったと思いますが、それはうまくいくでしょう。 100 OR *のように。 couchdb-luceneを使わなければならないかもしれません。 –
回避策として、キーを最初に要求する(?key = 100)と、ワイルドカード化された行を2番目に要求することがあります。もちろん、ワイルドカード化された行には、隣接するキーが必要です。 – ssmir
http://wiki.apache.org/couchdb/View_collation?action=show&redirect=ViewCollation#String_Rangesにすべてのことが書かれています:) –