Tôi có vấn đề mà tôi muốn "tự động" xóa tài liệu trong chiếc ghế dài của tôi, ít nhất 6 tháng tuổi. Ví dụ CouchDb của tôi chạy trên máy chủ Linux, có cách nào để đạt được điều này khá đơn giản (như viết một kịch bản lệnh shell 2 dòng đơn giản) không?CouchDb: Cách xóa tài liệu cũ hơn 6 tháng?
Trả lời
bạn có thể viết một chức năng cập nhật trong couchdb mà xóa một doc trên các tiêu chí nhất định (bạn có thể sử dụng params trong khi gọi hàm): http://wiki.apache.org/couchdb/Document_Update_Handlers#Creating_an_Update_Handler
(xem "tại chỗ" và tưởng tượng cài đặt "_delete: true").
cái gì đó như
"deletefunc":
...
if(doc.created_at<req.query.mindate) {
doc._deleted:true;
return [doc, "deleted"]
}
và gọi ... db/_design/updatefuncdesigndoc/_update/deletefunc/dok_id_x mindate = 20110816
Công việc duy nhất là: gọi từng tài liệu trong một cơ sở dữ liệu rõ ràng với chức năng này (gọi _all_docs hoặc _changes trước)
Cảm ơn bạn. Chức năng cập nhật là những gì tôi đang tìm kiếm. –
Miễn là tôi biết, CouchDB lưu trữ từng cơ sở dữ liệu (với tất cả tài liệu) trong một tệp đơn (). Vì vậy, bạn sẽ không thể tìm thấy tài liệu cụ thể theo tên của nó hoặc thêm-datetime.
UPDATE:
Tôi nghĩ rằng cách duy nhất sẽ có thêm một (hoặc "_doc_established") trường "_doc_created" cho từng tài liệu, với một dấu thời gian (tương đồng để SQLs NOW()
). Sau đó, tạo chế độ xem chỉ hiển thị các ID tài liệu là giá trị của các trường "_doc_created":
e.G.
function(doc) {
emit(doc._doc_created, doc._id);
//or just emit(doc._doc_created) 'couse views alsways return docIDs
}
và sau đó viết một kịch bản (ví dụ như một vỏ kịch bản) mà được tất cả các ID và số ngày (thông qua curl), lọc nó và sau đó (một lần nữa qua curl) Xóa tất cả các tài liệu từ cơ sở dữ liệu mà _doc_crated
datetime là lớn hơn 6 tháng từ nay
+1. Không giống như hầu hết các hệ thống tập tin, và các hệ thống như RoR, CouchDB không yêu cầu hoặc gợi ý rằng bạn giữ dấu thời gian trong dữ liệu của mình. Điều đó là không may, bởi vì các ứng dụng thành công (tức là những ứng dụng "tháng" sống hoặc hàng năm) hầu như luôn luôn cần thông tin đó sau đó. Giống như trồng một cây, thời gian tốt nhất tiếp theo để làm sạch dữ liệu là bây giờ. Kể từ khi CouchDB được thoải mái, bạn có thể thêm dấu thời gian vào hồ sơ của bạn khi cần thiết và truy vấn và xóa chúng khi cần thiết. – JasonSmith
Trong khi cách tiếp cận thêm dấu thời gian là tốt, cách tiếp cận được đề xuất để chạy 'kịch bản thanh lọc' là một cách tiếp cận khá phức tạp. Xem 'chức năng cập nhật trong couchdb' cho một cách tiếp cận đơn giản hơn và tận dụng các tính năng couchdb thích hợp. – Jay
- 1. Tài liệu giảng dạy Delphi cũ hơn
- 2. Làm cách nào để xóa nhiều tài liệu trong CouchDB?
- 3. Cách xóa tệp cũ hơn X giờ
- 4. Thay đổi mô hình tài liệu CouchDB?
- 5. couchdb - xóa bản sửa đổi
- 6. Có thể truy cập dữ liệu cũ trong CouchDB không?
- 7. Tìm nạp nhiều tài liệu CouchDB với couchdb-python
- 8. Cấu trúc tài liệu được đề xuất cho CouchDB
- 9. Xóa tệp cũ hơn X phút
- 10. Xóa các div cũ nếu có nhiều hơn 20 | jQuery
- 11. CouchDB: Tài liệu đơn lẻ và tài liệu "ghép nối" với nhau
- 12. Xóa các mục cũ hơn một ngày - SQL Server
- 13. 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
- 14. Làm cách nào để xóa dữ liệu cũ khỏi logcat?
- 15. SVN - xóa bản sửa đổi hoặc sửa đổi cũ hơn
- 16. Hadoop - Hive: Xóa dữ liệu cũ hơn số ngày được chỉ định
- 17. Nhập hàng loạt tài liệu json vào Apache CouchDb
- 18. xóa các hàng sqllite android cũ hơn x ngày
- 19. Cách xóa tài liệu từ PyPi
- 20. CouchDB: chèn một mảng mới vào một tài liệu
- 21. Làm cách nào để ngăn người dùng ẩn danh xóa/chỉnh sửa tài liệu của tôi trong couchDB?
- 22. Cách xác định ngày của 6 tháng trước đầy đủ
- 23. Tài liệu D tốt hơn
- 24. Xóa tài liệu jquery.ready() gọi
- 25. 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?
- 26. Cách nhận tất cả tài liệu từ couchdb bằng cách sử dụng lightcouch api trong java
- 27. Cách lưu tài liệu hàng loạt trong couchdb bằng cách sử dụng lightcouch api trong java
- 28. Xóa cơ sở dữ liệu khi Tài khoản bị xóa
- 29. Điều nào là tốt hơn - id được tạo tự động hoặc gán id thủ công trong tài liệu couchdb?
- 30. Làm cách nào để xóa các thiết bị không cần thiết cũ hơn?
Tôi đã cập nhật bài đăng của mình. Tôi hy vọng nó sẽ giúp bạn –
V-Light là đúng mà bạn không thể làm điều này mà không có (1) dấu thời gian trong tất cả các tài liệu của bạn, và (2) truy vấn chuẩn bị để tìm kiếm theo dấu thời gian. Tuy nhiên, một lần/nếu bạn đã có điều đó, tôi sử dụng 'jss' cho một lần làm việc với số lượng lớn Couch. Về cơ bản: 'curl --silent $ some_query | jss - '{_id: $ ._ id, _rev: $ ._ rev, _deleted: true}' - tài liệu trợ giúp | curl --silent $ some_db/_bulk_dos' – JasonSmith
Vì nó rất khó tìm với google, đây là liên kết đến jss: https://github.com/iriscouch/jss –