我正在使用couchdb来存储大型文档,这在将它们提取到内存时会造成一些麻烦。我确实意识到数据库不应该以这种方式使用。作为后备解决方案,是否可以从数据库中获取部分文档,而无需创建视图?
例如,如果文档包含字段map(res => res.json())
,id
和content
,我只想检索前两个字段。
提前谢谢你。
答案 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"
}
}
}