Jak pobrać wiele dokumentów z CouchDB, w szczególności z couchdb-python?Pobieranie wielu dokumentów CouchDB z couchdb-pythonem
Odpowiedz
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']
To jest właściwa droga:
import couchdb
server = couchdb.Server("http://localhost:5984")
db = server["dbname"]
results = db.view("_all_docs", keys=["key1", "key2"])
Jest to prawdą tylko wtedy, gdy nie masz dokładnej kontroli nad wynikami. Moja metoda pozwala prosić o klucze z _all_docs, które nie istnieją, a otrzymasz z powrotem pusty symbol zastępczy dla nieistniejących kluczy. Jeśli spróbujesz użyć tej metody, otrzymasz wyjątek podczas powtarzania wyników. Dlaczego chcesz zrobić coś takiego? Szybkie ręczne połączenia. Masz x dokumentów i chcesz dołączyć do danych z innych dokumentów. – dnolen
@dnolen: Właściwie to nie jest prawda ... jest błąd w kodzie '__repr____ dla wyniku wiersza, to prawda, ale możesz po prostu zrobić' [wiersz dla wiersza w db.view ('_ all_docs', klucze = ["klucz1", "klucz2"]). wiersze, jeśli "wartość" w wierszu] ', aby uzyskać wiersze, które istnieją. –
Najprostszym sposobem jest zdać include_docs = true argumentu do Database.view. Każdy wiersz wyników będzie zawierał dokument. na przykład
>>> 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]
Należy zauważyć, że dokument wiersza będzie Brak, jeśli dokument nie istnieje.
Działa to z dowolnym widokiem - wystarczy podać listę kluczy odpowiednich do widoku.
Nie sądzę, że to działa z redukcją widoków niestety. – dnolen
To prawda, ale dokumenty nie mają żadnego sensu po zmniejszeniu. Funkcja redukcji łączy elementy z wielu dokumentów (pary emitowane (pary kluczy, wartości) w pojedynczy wynik. W związku z tym wiersz redukcji składa się z wielu dokumentów, a pomysł dokumentu zmniejszania wiersza jest bez znaczenia. Oczywiście można pominąć redukcję widoku, przekazując słowo kluczowe reduce = False słów kluczowych, które można łączyć z include_docs = Prawda, wszystko w porządku. Ale to już nie jest redukcja; tylko mapa. –
- 1. Usuwanie wielu dokumentów w CouchDB
- 2. CouchDB nie replikuje dokumentów projektowych
- 3. Pobieranie analizowanych tokenów z dokumentów ElasticSearch
- 4. MongoDB pobieranie wybranych obiektów z zagnieżdżonych dokumentów
- 5. Jak mogę usunąć wiele dokumentów w CouchDB?
- 6. Sesja Bokeh i pobieranie dokumentów
- 7. Mongoose Tworzenie wielu dokumentów
- 8. Widok zapytania CouchDB z wieloma klawiszami Formatowanie
- 9. Widok CouchDB komponowanie obiektów JSON z osadzonymi tablicami z dwóch oddzielnych dokumentów
- 10. Zalecane podejście do ładowania dokumentów projektowych CouchDB w języku Python?
- 11. Rozwiązywanie konfliktów replikacji dla usuniętych dokumentów w CouchDB
- 12. jquery.ajax pobieranie wielu danych
- 13. Jak uniemożliwić anonimowym użytkownikom usuwanie/edytowanie moich dokumentów w couchDB?
- 14. pobieranie z loków za pomocą wielu połączeń
- 15. Pobieranie wielu plików bez użycia pliku zip
- 16. wstawianie lub ignorowanie wielu dokumentów w mongoDB
- 17. Usuwanie wielu dokumentów MongoDB w Pythonie
- 18. Zaktualizuj duży zestaw dokumentów
- 19. couchdb vs mysql speed
- 20. Identyfikacja duplikatów w CouchDB
- 21. CouchDB strategia wersjonowanie
- 22. PowerShell: pobieranie wielu aplikacji w AppPool
- 23. Jak skopiować z CouchDB do PouchDB?
- 24. Pobieranie wielu plików jednocześnie w aplikacjach Android
- 25. NSURLSession wątki: Śledzenie wielu pobieranie tła
- 26. Pobieranie ostatnich wstawionych identyfikatorów dla wielu wierszy
- 27. CouchDB dostęp do domeny z XMLHttpRequest?
- 28. Widok CouchDB jest bardzo wolny.
- 29. CouchDB - Replikacja filtrowana - czy można poprawić prędkość?
- 30. Pobieranie wielu plików i zip - rozszerzenie Chrome
-1: Ta odpowiedź została wysłana w tym samym czasie, gdy zadano pytanie, i została zaakceptowana na podstawie bardziej zgodnej z API odpowiedzi, która została wysłana, zanim to rozwiązanie zostało oznaczone jako zaakceptowane. –