Cách tìm nạp nhiều tài liệu từ CouchDB, đặc biệt với couchdb-python?Tìm nạp nhiều tài liệu CouchDB với couchdb-python
Trả lời
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']
Đây là đúng cách:
import couchdb
server = couchdb.Server("http://localhost:5984")
db = server["dbname"]
results = db.view("_all_docs", keys=["key1", "key2"])
Điều này đúng chỉ khi bạn không kiểm soát tốt các kết quả. Phương pháp của tôi cho phép bạn yêu cầu các khóa từ _all_docs không tồn tại và bạn sẽ lấy lại một trình giữ chỗ trống cho các khóa không tồn tại. Nếu bạn cố gắng với phương pháp này, bạn sẽ nhận được một ngoại lệ khi lặp qua kết quả. Tại sao bạn muốn làm điều gì đó như thế này? Tham gia thủ công nhanh chóng. Bạn có tài liệu x và bạn muốn tham gia vào dữ liệu từ các tài liệu khác. – dnolen
@dnolen: Trên thực tế, điều đó không đúng ... có lỗi trong mã '__repr__' cho kết quả hàng, điều đó đúng, nhưng bạn chỉ có thể thực hiện' [hàng cho hàng trong db.view ('_ all_docs', các phím = ["key1", "key2"]). hàng nếu 'giá trị' trong hàng] 'để có các hàng tồn tại. –
Cách dễ nhất là phải vượt qua một include_docs = True arg để Database.view. Mỗi hàng của kết quả sẽ bao gồm tài liệu. ví dụ.
>>> 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]
Lưu ý rằng tài liệu của hàng sẽ là Không nếu tài liệu không tồn tại.
Tính năng này hoạt động với bất kỳ chế độ xem nào - chỉ cần cung cấp danh sách các phím phù hợp với chế độ xem.
Tôi không nghĩ rằng điều này làm việc với chế độ xem giảm đáng tiếc. – dnolen
Đúng, nhưng tài liệu không có ý nghĩa gì sau khi giảm bớt. Việc giảm kết hợp các mục từ nhiều tài liệu (cặp phát ra (khóa, giá trị) của bản đồ) thành một kết quả duy nhất. Do đó, một hàng giảm được tạo thành từ nhiều tài liệu và ý tưởng về tài liệu của một hàng giảm là vô nghĩa. Tất nhiên, bạn có thể bỏ qua mức giảm của một lượt xem bằng cách chuyển từ giảm = Từ khóa giả arg và có thể được kết hợp với include_docs = Đúng là tốt. Nhưng đó không phải là giảm nữa; chỉ một bản đồ. –
- 1. Làm cách nào để xóa nhiều tài liệu trong CouchDB?
- 2. CouchDB: Tài liệu đơn lẻ và tài liệu "ghép nối" với nhau
- 3. CouchDB nhiều thẻ
- 4. Thay đổi mô hình tài liệu CouchDB?
- 5. Tìm nạp nhiều trong ThenFetch
- 6. Cấu trúc tài liệu được đề xuất cho CouchDB
- 7. JDBC với siêu dữ liệu chậm Spring tìm nạp Oracle
- 8. CouchDB: Liên kết tài liệu tham chiếu đến một loạt các loại tài liệu khác nhau
- 9. Kết hợp tìm nạp dữ liệu lõi
- 10. Tìm nạp JPA dữ liệu mùa xuân
- 11. Nhập hàng loạt tài liệu json vào Apache CouchDb
- 12. CouchDB: chèn một mảng mới vào một tài liệu
- 13. Tìm tài liệu với ObjectID trong mongoDB
- 14. CouchDb: Cách xóa tài liệu cũ hơn 6 tháng?
- 15. Mô hình CouchDB cho nhiều người dùng
- 16. Làm thế nào để tạo tài liệu thiết kế couchdb với Nano trong Node.js?
- 17. Bao gồm các tài liệu trong phát xạ so với include_docs = true trong CouchDB
- 18. MySQL không tìm nạp dữ liệu chính xác? (PHP)
- 19. sao chép Selective với CouchDB
- 20. MongoID, nhúng một tài liệu trong nhiều tài liệu
- 21. Chèn dữ liệu lõi và tìm nạp nhiều thực thể mối quan hệ
- 22. Thuộc tính được tìm nạp trong Dữ liệu chính
- 23. Trình tìm nạp SQL
- 24. Tìm nạp một hàng chỉ với MySQLi
- 25. Backbone.js với URL tìm nạp tùy chỉnh
- 26. PDO :: fetchAll so với PDO :: tìm nạp trong vòng lặp
- 27. Bắt đầu với CouchDB
- 28. Hibernate fetch join -> không thể tìm nạp nhiều túi
- 29. Tìm nạp nền dữ liệu chính qua NSPrivateQueueConcurrencyType mới
- 30. Làm cách nào để kiểm tra xem tài liệu couchdb có tồn tại (không truy xuất tài liệu đó) không?
-1: Câu trả lời này đã được đăng cùng lúc khi câu hỏi được hỏi và được chấp nhận qua một câu trả lời phù hợp hơn về API đã được đăng trước khi giải pháp này được đánh dấu là được chấp nhận. –