如何在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: { _

我正在使用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_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 });
     }

   }
}