2010-05-27 4 views
8

È possibile cercare per valore chiave in Apache CouchDB? Dato i dati di esempio di seguito (distanziati per migliorare la leggibilità):Ricerca per chiave in Apache CouchDB

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

potrei interrogare il database per l'utente o jsmith per l'utente avere la posta elettronica [email protected]? Come andrei su questo?

risposta

6

Sì, è certamente possibile. Creerai un paio di viste, che sono elenchi ordinati ("indice") dei tuoi dati, uno per chiave.

Il collegamento di Tobias è utile. Tuttavia, la documentazione standard CouchDB coprirà anche questo:

Per esempio, nel documento di progettazione, si potrebbe desiderare una vista users_by_email, con chiavi basate sul campo email; quindi una vista users_by_name digitata sul campo username, ecc. Provate le viste temporanee in Futon fino a quando la vostra funzione non funzionerà correttamente e quindi la memorizzerete nel vostro documento di progettazione in modo permanente.

Buona fortuna!

P.S. C'è un modo per combinare tutti questi requisiti in un'unica vista. In breve, è possibile digitare ["email", "[email protected]"] o ["name": "john smith"] ma ricorda, CouchDB è rilassato: il metodo più semplice sopra funzionerà correttamente. Quando ti senti a tuo agio con le visualizzazioni, puoi esplorare questo stile "fascicolato".

+0

fyi - i tasti dovrebbero essere brevi perché le chiavi vengono salvate all'interno di ogni oggetto. cerco sempre di tenerli molto piccoli come "email" sarebbe "m" o "e" - "username" sarebbe "u" ... solo una fyi - nessuno deve farlo ma se si immagazzina molto di dati aiuta a risparmiare un po 'di spazio. – Tobias

2

Non è possibile cercare per un valore chiave. Puoi cercare solo per chiavi.

Se si desidera cercare e-mail, emettere [e-mail, qualsiasi dei dati] in qualche vista e aggiungere ?key='search email' per visualizzare l'URL.

La ricerca solo con chiavi offre enormi vantaggi in termini di prestazioni e quindi questa funzione [ricerca per valore chiave] non arriverà mai a couchDB.