Come scaricare più documenti da CouchDB, in particolare con couchdb-python?Multiple CouchDB Document fetch con couchdb-python
risposta
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']
Questa è la strada giusta:
import couchdb
server = couchdb.Server("http://localhost:5984")
db = server["dbname"]
results = db.view("_all_docs", keys=["key1", "key2"])
Questo è vero solo se non si controlla in modo preciso i risultati. Il mio metodo ti consente di chiedere chiavi da _all_docs che non esistono e recupererai un segnaposto vuoto per le chiavi inesistenti. Se si tenta di farlo con il metodo, si otterrà un'eccezione durante l'iterazione dei risultati. Perché vorrei fare qualcosa di simile? Join veloci manuali. Hai documenti x e vuoi unirti ai dati di altri documenti. – dnolen
@dnolen: In realtà, non è vero ... c'è un errore nel codice '__repr__' per un risultato di riga, è vero, ma puoi semplicemente fare' [riga per riga in db.view ('_ all_docs', chiavi = ["key1", "key2"]). rows se 'value' nella riga] 'per ottenere le righe esistenti. –
Il modo più semplice è quello di passare un include_docs = True arg a Database.view. Ogni riga dei risultati includerà il documento. per esempio.
>>> 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]
Si noti che il documento di una fila sarà None se il documento non esiste.
Questo funziona con qualsiasi vista - basta fornire un elenco di chiavi adatto alla vista.
Purtroppo non penso che funzioni con le visualizzazioni ridotte. – dnolen
Vero, ma i documenti non hanno alcun senso dopo una riduzione comunque. Una riduzione combina elementi da più documenti (le coppie emesse dalla mappa (chiave, valore)) in un singolo risultato. Pertanto, una riga ridotta è composta da molti documenti e l'idea di un documento di una riga ridotta non ha senso. Ovviamente, puoi saltare la riduzione di una vista passando una riduzione = False parola chiave arg e che può essere combinata con include_docs = Vero bene. Ma non è più una riduzione; solo una mappa –
- 1. CouchDB e chiavi multiple
- 2. Ricerca multicriterio con CouchDB
- 3. Come iniziare con CouchDB
- 4. Perché `$ (document) === $ (document)` restituisce false in jQuery?
- 5. Restituzione di HTML con fetch()
- 6. Confuso con CouchDB e Couchbase
- 7. Timestamp automatico CouchDb
- 8. Document Matrix a termine efficiente con NLTK
- 9. mysql fetch assoc VS mysql fetch array
- 10. notifiche cambio couchdb-python
- 11. awk dynamic document indexing
- 12. Mongoengine Document as EmbeddedDocument
- 13. sostituzioni multiple con javascript
- 14. NSPredicate con condizioni multiple
- 15. Applicazioni multiple con django
- 16. Legende multiple con ggplot2
- 17. XPath con condizioni multiple
- 18. Scala multiple con
- 19. $ (document) .ready() source
- 20. Errore con Typescript/whatwg-fetch/webpack
- 21. Come recuperare XML con fetch api
- 22. Come inviare cookie con node-fetch?
- 23. Locks and batch fetch messages con RabbitMq
- 24. Document folder iOS Simulator
- 25. Document Root PHP
- 26. Connessione a Cloudant CouchDB con Node.js?
- 27. Aggiungere dati a couchdb con risposta jsonp
- 28. Doctrine fetch join
- 29. Scala Slick Lazy Fetch
- 30. Couchdb in Nodejs
-1: questa risposta è stata pubblicata nello stesso momento in cui è stata fatta la domanda ed è stata accettata su una risposta più conforme all'API che è stata pubblicata prima che questa soluzione fosse contrassegnata come accettata. –