如何在CouchDb文档上提取嵌入的1:1数据
我正在使用CouchDb存储我的文档,并了解如何使用CouchDb视图在文档上提取1:1的相关数据 对于给定的文档结构如何在CouchDb文档上提取嵌入的1:1数据,couchdb,Couchdb,我正在使用CouchDb存储我的文档,并了解如何使用CouchDb视图在文档上提取1:1的相关数据 对于给定的文档结构 { _id: 'some_id', doc_type: 'item', name: 'Steel Caliper' description: 'Steel Caliper description', classification: { _id: 'some_classification_id' } } classification: { _
{
_id: 'some_id',
doc_type: 'item',
name: 'Steel Caliper'
description: 'Steel Caliper description',
classification: {
_id: 'some_classification_id'
}
}
classification: {
_id: 'some_classification_id',
doc_type: 'classification',
name: 'Hand Tools'
}
当我使用如下所示的CouchDb视图检索项目文档列表时(使用include_docs=true调用)
我得到了项目文档,但没有拉入分类数据
{
"total_rows": 10,
"offset": 0,
"rows": [
{
"id": "some_id",
"key": "Steel Caliper",
"value": null,
"doc": {
"_id": "some_id",
"_rev": "1-65d32fe22a0b949ff73f23c65042ae3c"
"doc_type": "item"
"name": "Steel Caliper"
"classification": {
"_id": "some_classification_id"
}
}
},
{ ... }
}
是否有一种方法可以使用视图拉入分类数据并获得如下输出
...
"doc": {
"_id": "some_id",
"_rev": "1-65d32fe22a0b949ff73f23c65042ae3c"
"doc_type": "item"
"name": "Steel Caliper"
"classification": {
"_id": "some_classification_id",
"doc_type": "classification",
"name": "Hand Tools"
}
}
...
是的,这称为视图排序规则。如果您通过_id加入,则可以发出多个文档 你可以打电话给我
function(doc) {
if(doc_type==='item') {
emit(doc.name, null);
if( doc.classification ){
emit( doc.classification._id, {_id: doc.classification._id });
}
}
}
您可能仍然需要处理返回的结果,以便将其转换为所需的形式
function(doc) {
if(doc_type==='item') {
emit(doc.name, null);
if( doc.classification ){
emit( doc.classification._id, {_id: doc.classification._id });
}
}
}