2017-09-19 4 views
1

CouchDBには、特定のフィルタ条件を満たさない文書を返す方法がありますか?私はPythonのAPIを使用して、以下の例に提供しています:CouchDB(Python)で否定結果を照会する方法

couch['test_db'].view('doc/entrybyname', key=value, include_docs=True) 

は私がキーvalueと一致しなかったすべての文書を望んでいたと言うが... CouchDBのは、これを行う方法を提供していますか?

現在、私はすべてのドキュメントを必要に応じてフィルタリングするよりも、特にデータベースのサイズが大きくなると、非常に非効率です。

ご協力いただきありがとうございます。

ブライアン

答えて

2

は、インデックス内のであることをデータのみ、インデックス内ではないことから、データを返す方法はありません。 Mango/Queryメカニズムは、あなたがこのようなクエリを実行することができない:

として読み込む
{ 
    "selector": { 
    "country_code": { "$ne": "UK"} 
    } 
} 

「を見つける私のCOUNTRY_CODEは 『英国』に等しくない文書のすべて」が、クエリはによって供給されませんインデックス - すべてのドキュメントをスキャンする必要があるため、大量のデータボリュームではパフォーマンスが低下します。

あなたのユースケースに応じて、関心のあるドキュメントのみを含むカスタムMap/Reduceインデックスを作成できます。

function(doc) { 
    if (doc.country_code != 'UK') { 
    emit(doc.country_code, null); 
    } 
} 

英国にはないすべての文書の索引を作成し、国コードをキーにして作成します。

関連する問題