2010-05-27 18 views
8

¿Es posible buscar por valor clave en Apache CouchDB? Teniendo en cuenta los datos de la muestra a continuación (espaciados para facilitar la lectura):Búsqueda por clave en Apache CouchDB

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

¿Puedo consultar la base de datos para el usuario jsmith o para que el usuario tenga el correo electrónico [email protected]? ¿Cómo voy a hacer esto?

Respuesta

6

Sí, es ciertamente posible. Creará un par de vistas, que son listas ordenadas ("índice") de sus datos, una por clave.

El enlace de Tobias es útil. Sin embargo, la documentación estándar CouchDB cubrirá esto también:

Por ejemplo, en el documento de diseño, es posible que desee una vista users_by_email, con claves basadas en el campo email; luego una vista users_by_name en el campo username, etc. Experimenta con las vistas temporales en Futon hasta que consigas que tu función funcione correctamente, y luego guárdala en tu documento de diseño permanentemente.

¡Buena suerte!

P.S. Hay una manera de combinar todos estos requisitos en una vista. En pocas palabras, puede presionar ["email", "[email protected]"] o ["name": "john smith"], pero recuerde, CouchDB está relajado: el método más simple de arriba funcionará bien. Cuando te sientas cómodo con las vistas, puedes explorar este estilo "intercalado".

+0

fyi - las claves deben ser cortas porque las claves se guardan dentro de cada objeto. Siempre trato de mantenerlos muy pequeños, como "correo electrónico" sería "m" o "e" - "nombre de usuario" sería "u" ... solo un fyi - nadie tiene que hacerlo, pero si almacena mucho de datos, ayuda a ahorrar espacio. – Tobias

2

No se puede buscar por un valor clave. Solo puedes buscar por claves.

Si desea buscar correos electrónicos, emita [correo electrónico, los datos] en alguna vista y agregue ?key='search email' para ver la URL.

La búsqueda solo por claves brinda enormes beneficios de rendimiento y, por lo tanto, esta característica [búsqueda por valor clave] nunca llegará a couchDB.

Cuestiones relacionadas