2017-09-19 2 views
1

Hat CouchDB eine Möglichkeit, die Dokumente zurückzugeben, die bestimmte Filterkriterien nicht erfüllen? Ich verwende Python-API und lieferte ein Beispiel unter:Wie für negierte Ergebnisse in CouchDB (Python) abgefragt werden

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

sagen, dass ich alle Dokumente gesucht, die nicht den Schlüssel value brachte ... anbietet CouchDB eine Möglichkeit, dies zu tun?

Im Moment bin ich immer alle Dokumente als sie das Filtern nach Bedarf, die sehr ineffizient ist, vor allem, da die Datenbank in der Größe wächst.

Vielen Dank für Ihre Hilfe im Voraus.

Brian

Antwort

2

Es gibt keine Möglichkeit, Daten von einem zurückzuversetzen nicht in einem Index ist, nur Daten, die im Index ist. Der Mango/Query Mechanismus ermöglicht es Ihnen, Fragen wie diese auszuführen:

{ 
    "selector": { 
    "country_code": { "$ne": "UK"} 
    } 
} 

, die „mein finden alle Dokumente in denen country_code nicht gleich‚UK‘ist“, wie er liest, aber die Abfrage nicht durch ein mit Strom versorgt werden Index - es würde einen Scan aller Dokumente erfordern - wäre also für große Datenmengen nicht performant.

Je nach Anwendungsfall können Sie eine benutzerdefinierte Map/Reduce-Index erstellen, die nur die Dokumente enthält, die Sie in z Interesse

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

erstellt einen Index aller Dokumente, die nicht in Großbritannien sind, eingegeben auf den Ländercode.

Verwandte Themen