CouchDB “Join” two documents
我有两个文件看起来有点像这样:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | Doc { _id: AAA, creator_id: ..., data: ... } DataKey { _id: ..., credits_left: 500, times_used: 0, data_id: AAA } |
我想要做的是创建一个视图,允许我传递DataKey id(key = DataKey _id)并获取DataKey和Doc的信息。
我的尝试:
我首先尝试在Doc中嵌入DataKey并使用map函数,如下所示:
1 2 3 4 5 6 7 8 9 10 11 | function (doc) { if (doc.type =="Doc") { var ids = []; for (var i in doc.keys) ids.push(doc.keys[i]._id); emit(ids, doc); } } |
但我遇到了两个问题:
Doc使用startkey = [idhere ...]
和endkey = [idhere ...,{}]没有
工作(只有在关键时刻才有效
成为阵列中的第一个)。
有谁有想法我怎么能做到这一点?如果有什么不清楚,请告诉我。
- - -编辑 - - -
我忘了提到在我的应用程序中我不知道Doc ID是什么,所以我需要能够搜索DataKey的ID。
我想你想要的是什么
1 2 3 4 5 6 7 8 9 10 11 12 | function (doc) { if (doc.type =="Doc") { emit([doc._id, 0], doc); } if(doc.type =="DataKey") { emit([doc.data_id, 1], doc); } } |
现在,使用
这是一种常见的技术,称为CouchDB视图排序规则。