¿Cómo recuperar varios documentos de CouchDB, en particular con couchdb-python?Recuperación de documento CouchDB múltiple con couchdb-python
Respuesta
import couchdb
import simplejson as json
resource = couchdb.client.Resource(None, 'http://localhost:5984/dbname/_all_docs')
params = {"include_docs":True}
content = json.dumps({"keys":[idstring1, idstring2, ...]})
headers = {"Content-Type":"application/json"}
resource.post(headers=headers, content=content, **params)
resource.post(headers=headers, content=content, **params)[1]['rows']
Ésta es la manera correcta:
import couchdb
server = couchdb.Server("http://localhost:5984")
db = server["dbname"]
results = db.view("_all_docs", keys=["key1", "key2"])
Esto es cierto solo si no se tiene un control preciso de los resultados. Mi método te permite pedir claves de _todos_dos que no existen, y obtendrás un marcador de posición vacío para las claves que no existen. Si intenta esto con su método, obtendrá una excepción al repetir los resultados. ¿Por qué querría hacer algo como esto? Uniones manuales rápidas. Tiene x documentos y desea unir datos de otros documentos. – dnolen
@dnolen: en realidad, eso no es verdad ... hay un error en el código '__repr__' para un resultado de fila, eso es cierto, pero puedes hacer' [row para row en db.view ('_ all_docs', claves = ["key1", "key2"]). rows si 'value' en la fila] 'para obtener las filas que existen. –
La manera más fácil es pasar un include_docs = True arg a Database.view. Cada fila de los resultados incluirá el documento. p.ej.
>>> db = couchdb.Database('http://localhost:5984/test')
>>> rows = db.view('_all_docs', keys=['docid1', 'docid2', 'missing'], include_docs=True)
>>> docs = [row.doc for row in rows]
>>> docs
[<Document 'docid1'@'...' {}>, <Document 'docid2'@'...' {}>, None]
Tenga en cuenta que el documento de una fila será Ninguno si el documento no existe.
Esto funciona con cualquier vista; solo proporcione una lista de teclas adecuada para la vista.
No creo que esto funcione con la reducción de puntos de vista, lamentablemente. – dnolen
Cierto, pero los documentos no tienen ningún sentido después de una reducción de todos modos. Un reductor combina elementos de varios documentos (los pares emitidos (clave, valor) del mapa) en un solo resultado. Por lo tanto, una fila de reducción se compone de muchos documentos y la idea de un documento de una fila reducida no tiene sentido. Por supuesto, puede omitir la reducción de una vista al pasar una arg palabra clave reducir = Falso y que se puede combinar con include_docs = True simplemente bien. Pero eso ya no es una reducción; solo un mapa –
- 1. ¿CouchDB es compatible con consultas de rango múltiple?
- 2. CouchDB crea una base de datos por tipo de documento?
- 3. Recuperación del iframe padre de un documento en jQuery
- 4. Cambiar parte de un documento utilizando CouchDB PUT
- 5. ¿Cómo cargo un documento de diseño a CouchDB usando cURL?
- 6. Eliminar un campo de documento antes de guardar en CouchDB?
- 7. CouchDB: documento único frente a "unión" de documentos juntos
- 8. ¿Cómo verificar si existe un documento de couchdb (sin recuperarlo)?
- 9. (actualizaciones in situ) CouchDB documento de actualización Manipuladores
- 10. couchdb: mapa en el documento de diseño da compilation_error
- 11. CouchDB - Código de activación al crear o actualizar el documento
- 12. CouchDB: insertar una nueva matriz en un documento
- 13. ¿Cómo obtener el último documento creado en couchdb?
- 14. ¿CouchDB es compatible con la integridad referencial?
- 15. Recuperación de VisualSVN con TortoiseSVN
- 16. Obtener un documento con un valor de campo específico en CouchDB?
- 17. Usar CouchDB con .NET
- 18. Comenzando con CouchDB
- 19. CouchDB autorización
- 20. Replicación filtrada de CouchDB
- 21. Comodines en vistas con CouchDB?
- 22. Resolución de conflictos de Couchdb
- 23. couchdb - eliminando la revisión
- 24. estrategia de control de versiones CouchDB
- 25. Recuperación de suscripciones ARB con API Authorize.Net
- 26. Identificación de duplicados en CouchDB
- 27. Protección de bases de datos estilo documento (MongoDb, CouchDb, RavenDb) para acceso de cliente (navegador)
- 28. Consulta de CouchDB con el parámetro endkey
- 29. Usando Knockout.js con CouchDB - actualizando cuando se cambió
- 30. ¿La replicación filtrada de Can CouchDB replica las últimas 100 revisiones de un documento?
-1: esta respuesta se publicó al mismo tiempo que se formuló la pregunta, y se aceptó una respuesta más conforme a la API que se publicó antes de que esta solución se marcara como aceptada. –