如何获取附件的子集

How to fetch subset of attachments

我有一个带有文档的 CouchDB,如下所示:

{
  "_id": "000040cc-e3b4-47cc-b051-a5508efb8996",
  "_rev": "1-882d7f88cc2e1e767b55d0c82fb638d2",
  "state": "uploaded",
  "state_since": "2020-02-17T11:20:55.1450252Z"
  // more metadata ...

  "_attachments": {
    "large.jpg": {
      "content_type": "image/jpeg",
      "revpos": 1,
      "digest": "md5-NK7ejYjrErhMAs7tZ4+R8w==",
      "length": 87846,
      "stub": true
    },
     "medium.jpg": {
      ...
    },
    "small.jpg": {
      ...
    }
  }
}

假设,我想查询一组像这样的图像:

{
   "selector": {
      "state": "uploaded"
   },
   "sort": ["state_since"],
   "limit": 100
}

如果我想显示这 100 张图片的缩略图,我必须遍历结果列表并下载相应的附件。这将是总共 101 个请求。

我也可以通过指定在一个请求中执行此操作,即我想获取带附件的文档。但这会 return 所有(可能非常大)附件。

我知道我可以将查询中的 fields 属性 设置为仅 return 我需要的字段。但是我也可以将其应用于附件吗?如果是:如何?

不,无法执行您的请求。获取附件子集的唯一方法是一次获取一个,或者在获取单个文档时使用 atts_since 属性,该文档旨在用于复制。

或许可以考虑重新设计您的文档。也许您可以将缩略图存储在单独的文档中,该文档仅包含缩略图。