Suche nach mehreren Kriterien mit CouchDB

8

Wie bekomme ich Daten von CouchDB, Filtern über mehrere Felder.

Zum Beispiel, wenn ich eine Personendatenbank mit Feldern wie Name, Staat, Land usw. habe; und ein Suchformular auf einer Webseite, Wie bekomme ich die Daten von CouchDB, nur unter Berücksichtigung der Nicht-Null-Bedingungen.

In SQL würde ich der where-Klausel WHERE Person.Name="John" AND Person.State in ("NY","CA") Bedingungen hinzufügen, aber wie rahme ich diese Abfrage als CouchDB-Ansicht

    
Midhat 07.03.2013, 13:51
quelle

2 Antworten

7

In CouchDB verwenden Sie map / reduce Views. In SQL müssen Sie explizit angeben, welcher Feldindex erstellt werden soll. In CouchDB schreiben Sie benutzerdefinierte Funktion erstellen Index, so dass es spezifischer für Ihre Bedürfnisse sein kann. Wenn Sie den Index für eine so einfache Sache wie eine Suche mit Namen, Staat und Land Felder wollen, ist die Ansicht nur eine Kartenfunktion:

%Vor%

Um mit dieser Ansicht zu suchen, suchen Sie nach dem Schlüssel ["my_name", "my_state", "my_country"] . Sie können es verwenden, um eine Teilmenge von Namen, Bundesland und Land abzufragen, solange sie ein Präfix des emittierten Arrays sind (z. B. Suche mit name , aber nicht mit state und country ), da das durchsuchbare Ergebnis von map ist lexikographisch sortiert.

Im Prinzip ist die Ansicht ein Index mit einigen Fähigkeiten der Abfragen, nicht so flexibel wie SQL-Abfragen. Sie werden einmal ausgeführt und auf der Festplatte gespeichert und schrittweise für neue / geänderte Daten berechnet. Denken Sie daran, dass es im verteilten System (für das CouchDB entwickelt wurde) nicht einfach ist, kompliziertere Joins zu verwenden, ohne Index zu suchen ... Obwohl in vielen Fällen eine künstliche Aufteilung für Tabellen in relationalen Modellen nicht notwendig ist, wenn sie strukturiert sind Dokumente sind verfügbar und einige der Joins werden nicht benötigt.

Für einen kurzen Vergleich von CouchDB und SQL siehe dieses Kapitel von The Definitive Guide Buch und andere Kapitel und das offizielle Wiki für weitere Informationen zu den Ansichten.

    
Marcin Skórzewski 07.03.2013 19:10
quelle
0

Sie müssen eine Sicht erstellen, die [Dokumentname, Dokumentstatus] enthält. Dies ist in der Dokumentation gut genug beschrieben. Das eigentliche Problem ist, wie man Personen aus zwei zufälligen Zuständen auswählt.

Hier ist ein guter Artikel, der diese Frage beantwortet: Verwendung mehrerer Start- und Endtasten für CouchDB-Ansichten

    
Antonio 10.03.2013 07:58
quelle

Tags und Links