从couchdb获取部分文档

时间:2018-05-07 15:24:46

标签: database couchdb

我正在使用couchdb来存储大型文档,这在将它们提取到内存时会造成一些麻烦。我确实意识到数据库不应该以这种方式使用。作为后备解决方案,是否可以从数据库中获取部分文档,而无需创建视图?

例如,如果文档包含字段map(res => res.json())idcontent,我只想检索前两个字段。

提前谢谢你。

2 个答案:

答案 0 :(得分:4)

如果您使用的是CouchDB 2.x,则可以使用/db/_find端点作为检索部分文档的机制。

POST / db / _find

  {
    "selector": {
      "_id": "a-doc-id"
    },
    "fields": [
      "_id",
      "content"
    ]
   }

您只会获得您在查询中指定的字段集

答案 1 :(得分:0)

在CouchDB 2.x之前,这是不可能的。对于CouchDB 2.x或更高版本,请参阅JuanjoRodriguez的回答。

但是,任何版本的CouchDB的一个可能的解决方法是利用文件附件,默认情况下,文件附件从获取中排除。如果您的某些数据并不总是需要,并且不需要包含在索引中,您可以将其存储为(JSON)附件,而不是直接作为文档的一部分存储:

{
    "id": "foo",
    "content": "stuff",
    "extra_content": "other stuff"
}

变为:

{
    "id": "foo",
    "content": "stuff",
    "_attachments": {
        "extra_content": {
            "content_type": "application/json",
            "data": "ZXh0cmEgc3R1ZmYK"
        }
    }
}