代码之家  ›  专栏  ›  技术社区  ›  JoCuTo

删除\u按日期删除CouchDB上的文档

  •  3
  • JoCuTo  · 技术社区  · 7 年前

    我的 CouchDb 数据库越来越大,我想删除的日期也我想删除文件 _deleted 按日期列出的文档 我知道如何按日期复制数据库删除文档,但:
    有没有一种方法可以做到这一点 _已删除 文件?我是说删除 _已删除 按日期列出的文档

    2 回复  |  直到 7 年前
        1
  •  3
  •   natevw    7 年前

    实际上没有一种方法可以有条件地 原因 使用过滤复制的删除,也不能复制 完成 删除文档。

    您有多种选择:

    • 您可以避免复制 更新 通过按日期筛选旧文档,但如果它们已被复制,则不会被删除
    • 您可以创建一个视图来返回旧文档,并使用脚本在源数据库中删除它们。删除操作将复制到任何目标数据库,但所有数据库将至少保留一个 {_deleted:true} 文档的墓碑[这就是删除首先被复制的方式]
    • 您可以找到旧文档并清除它们,但您必须在每个副本上这样做

    你的主要目标是什么?

    如果您有数百个对象,并且希望从所有副本的UI中隐藏旧对象,请编写一个脚本来查找和 DELETE / _delete:true 它们来自源/主副本,更改将传播。

    _purge 最后 _compact ,然后运行它 每一个 复制品但在这种情况下,最好是旋转数据库,例如手动“shard”或 bin 每周放入不同的数据库,每周只需在每个副本上删除N+1周的数据库。

        2
  •  1
  •   Alexis Côté    7 年前

    如果您的数据库越来越大,这可能是由于您的文档版本。释放一些空间的简单方法是运行数据库压缩 (Documentation)

    对于已删除的文档,您只能 真正地 删除方式 purging

    因此