2017-03-30 7 views
0

私はドキュメントを保存し、CouchDbビューを使用してドキュメントの1:1関連データをプルする方法を理解するためにCouchDbを使用しています。 埋め込み1:1データをCouchDbドキュメントにプルするには

{ 
    _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で呼び出さ=真)は、この与えられた文書構造については

function(doc) { 
    if(doc_type==='item') { 
    emit(doc.name, null); 
    } 
} 

私はアイテムの文書を入手します分類データは取り込まれません。

{ 
    "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" 
     } 
    } 
... 

答えて

1

はい、これはビュー照合と呼ばれます。 _idsで参加する場合、複数のドキュメントを発行できます。あなたのケースで

あなたはまだあなたが望む形にそれを得るために返された結果で遊んでなければならない場合があります

function(doc) { 
    if(doc_type==='item') { 
    emit(doc.name, null); 
    if(doc.classification){ 
     emit(doc.classification._id, {_id: doc.classification._id }); 
    } 

    } 
} 

を呼び出すことができます。

http://docs.couchdb.org/en/2.0.0/couchapp/views/joins.html

関連する問題