如何使用CouchDB获取附件的子集?

问题描述 投票:1回答:1

我有一个带有文档的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个请求。

我也可以在一个请求中通过指定要获取带有附件的文档来完成此操作。但这将返回所有(可能很大)的附件。

我知道我可以在查询中设置fields属性,以仅返回所需的字段。但是我也可以将其应用于附件吗?如果是的话:如何?

couchdb attachment couchdb-mango
1个回答
0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.