如何防止在 CouchDb 上保存同名文件?

How to prevent saving same named file on CouchDb?

我正在使用 CouchDB 和 Divan - CouchDb 的 C# 接口库。

CouchDb 上一个文件可以上传多次。每次上传文件后 "id" 都会更改,但 "rev" 保持不变。 即使为正在上传的文件定义的所有自定义属性与 CouchDb 上同名的任何现有文件相同,也会发生这种情况。

如果所有自定义属性都相同,有什么方法可以避免上传同名文件吗?获取所有文件并检查它们的文件名重复可能是一种方法,但根据其他因素,它所需的时间绝对不是可取的。

谢谢。

假设您有一个文件的 3 个属性:

  • 名字
  • 字节大小
  • 修改日期

我看到了避免数据库中重复的两种主要可能性。

客户端方法

您查询数据库以检查是否存在具有相同属性的文档和视图。如果它不存在,请创建它。

用户定义的id

您可以像 library 那样从属性中生成一个 ID。

例如,如果我的文档具有这些属性: "name":"test.txt", "size":"512", "lastModified":"2016-11-08T15:44:29.563Z"

您可以像这样构建一个唯一 ID: "_id":"test.txt/2016-11-08T15:44:29.563Z/512"