Couchdb 如何获取附件的子集

Couchdb 如何获取附件的子集,couchdb,attachment,couchdb-mango,Couchdb,Attachment,Couchdb Mango,我有一个带文档的CouchDB,它看起来如下: { "_id": "000040cc-e3b4-47cc-b051-a5508efb8996", "_rev": "1-882d7f88cc2e1e767b55d0c82fb638d2", "state": "uploaded", "state_since": "2020-02-17T11:20:55.1450252Z" // more metadata ... "_attachments": { "large.j

我有一个带文档的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
}
假设我想查询一组图像,如下所示:

{
  "_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个请求

我还可以在一个请求中指定我要获取带有附件的文档。但这将返回所有(可能非常大)附件


我知道我可以在查询中设置
字段
属性,只返回我需要的字段。但我也可以将此应用于附件吗?如果是:怎么做?

否,没有办法满足您的要求。获取附件子集的唯一方法是一次获取一个附件,或者在获取单个文档(用于复制)时使用属性


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

现在我正在尝试不同的设计。我有多个二进制数据文件属于一个文档(大约10个),我上面描述的设计的优点是,删除一个文档可以在一个请求中完成。如果我的文档只包含对二进制文件的引用,我必须首先在多个请求中分别删除这些文件。但是由于性能原因,能够批量处理附件的子集是非常重要的,因此我想我必须找到另一种方法。另一种可能适用于缩略图的方法是将缩略图作为Base64编码的数据直接包含在文档中。这还有其他缺点,例如无法轻松排除它们。但如果它们足够小,这可能是一个合理的方法。