2010-05-27 7 views
8

Ist es möglich, nach Schlüsselwert in Apache CouchDB zu suchen? Da unten die Probendaten (Abstand zur besseren Lesbarkeit):Suche nach Schlüssel in Apache CouchDB

{ 
    "_id":"a754a63dcc7f319b02f7ce6de522ca26", 
    "_rev":"1-5bd88e53fe0869b8ce274b49a2c1ddf5", 
    "name":"john smith", 
    "email":"[email protected]", 
    "username":"jsmith" 
} 

Kann ich die Datenbank für den Benutzer jsmith abzufragen oder für den Benutzer, der die E-Mail [email protected]? Wie würde ich darüber gehen?

Antwort

6

Ja, das ist durchaus möglich. Sie erstellen einige Ansichten, bei denen es sich um sortierte Listen ("Index") Ihrer Daten handelt, eine pro Schlüssel.

Tobias Link ist nützlich. Doch die Standard-CouchDB Dokumentation wird diese Abdeckung auch:

Zum Beispiel in Ihrem Design-Dokument, mögen Sie vielleicht eine users_by_email Ansicht mit Schlüsseln basierend auf dem email Feld; dann eine users_by_name Ansicht, die auf dem username Feld, etc. Keyed ist. Experimentieren Sie mit den temporären Ansichten in Futon, bis Sie Ihre Funktion genau richtig arbeiten, und speichern Sie sie dann dauerhaft in Ihrem Designdokument.

Viel Glück!

P.S. Es gibt eine Möglichkeit, alle diese Anforderungen in einer Ansicht zu kombinieren. Kurz gesagt, könnten Sie auf ["email", "[email protected]"] oder ["name": "john smith"] eingeben, aber denken Sie daran, CouchDB ist entspannt: Die einfachere Methode oben funktioniert gut. Wenn Sie sich mit Ansichten vertraut machen, können Sie diesen "kollationierten" Stil erkunden.

+0

fyi - Schlüssel sollten kurz sein, da Schlüssel in jedem Objekt gespeichert werden. ich versuche immer, sie so klein wie "email" wäre "m" oder "e" - "benutzername" wäre "du" ... nur ein fyi - niemand muss es tun, aber wenn du viel speicherst von Daten hilft es, etwas Platz zu sparen. – Tobias

2

Sie können nicht nach einem Schlüsselwert suchen. Sie können nur nach Schlüsseln suchen.

Wenn Sie nach E-Mails suchen möchten, geben Sie [E-Mail, beliebige Daten] in einer Ansicht aus und fügen Sie ?key='search email' hinzu, um die URL anzuzeigen.

Die Suche nur mit Tasten bietet enorme Leistungsvorteile und daher wird diese Funktion [Suche nach Schlüsselwert] nie zu couchDB kommen.