我正在使用似乎是创建连接视图的常用技巧:
// a Customer has many Orders; show them together in one view:
function(doc) {
if (doc.Type == "customer") {
emit([doc._id, 0], doc);
} else if (doc.Type == "order") {
emit([doc.customer_id, 1], doc);
}
}
我知道我可以使用以下查询来获取单个customer
和所有相关Order
的 s:
?startkey=["some_customer_id"]&endkey=["some_customer_id", 2]
但是现在我已经将我的查询与我的视图代码非常紧密地联系在一起。是否有一个值可以放在我的“ 2
”处,以便更清楚地说,“我希望一切都与这个客户相关联”?我想我见过
?startkey=["some_customer_id"]&endkey=["some_customer_id", {}]
但我不确定那{}
肯定会排在其他所有事情之后。
归功于 cmlenz的join 方法。
CouchDB wiki page on collation的进一步说明:
该查询
startkey=["foo"]&endkey=["foo",{}]
将匹配第一个元素中带有“foo”的大多数数组键,例如["foo","bar"]
and["foo",["bar","baz"]]
。但是它不会匹配["foo",{"an":"object"}]
所以在排序顺序{}
中很晚,但绝对不是最后一个。