给出一个关于couchbase的JSON文档,例如,里程碑集合,类似于:
{
"milestoneDate" : /Date(1335191824495+0100)/,
"companyId" : 43,
"ownerUserId": 475,
"participants" : [
{
"userId": 2,
"docId" : "132546"
},
{
"userId": 67,
"docId" : "153"
}
]
}
Run Code Online (Sandbox Code Playgroud)
如果我要选择公司的所有里程碑43并希望最先订购它们......我在couchbase上的观点与此类似:
function (doc, meta) {
if(doc.companyId && doc.milestoneDate)
{
//key made up of date particles + company id
var eventKey = dateToArray(new Date(parseInt(doc.milestoneDate.substr(6))));
eventKey.push(doc.companyId);
emit(eventKey, null);
}
}
Run Code Online (Sandbox Code Playgroud)
我确实得到了两个日期和公司ID在休息网址上..然而,对于couchbase而言,我很难解决如何限制视图以仅返回公司的里程碑 43
返回键类似于:
"key":[2013,6,19,16,11,25,14]
Run Code Online (Sandbox Code Playgroud)
最后一个元素(14)是公司ID ..这显然是错误的.
我尝试过的查询参数是:
&descending=true&startkey=[{},43]&descending=true&startkey=[{},43]&endKey=[{},43]value但无法按值限制返回结果.根据couchbase文档,我需要在开始时对日期部分进行排序.我现在如何通过公司ID限制它们?
谢谢.
将公司ID放在数组的开头,并且因为你将受到公司ID的限制,所以couchbase按公司ID排序,然后按日期数组进行排序,这样你就只能得到一家公司的里程碑文件
我修改了要发出的视图
emit([doc.copmanyId, eventKey], null);
Run Code Online (Sandbox Code Playgroud)
然后你可以查询视图
&descending=true&startkey=[43,{}]
Run Code Online (Sandbox Code Playgroud)
这对我以前有用..
我回去尝试使用结束键,这似乎工作 - 根据需要限制和命令:
&descending=true&startkey=[43,{}]&endkey=[42,{}]
Run Code Online (Sandbox Code Playgroud)
要么
&descending=true&startkey=[43,{}]&endkey=[43,{}]&inclusive_end=true
Run Code Online (Sandbox Code Playgroud)
要么使用结束键指定下一个递增/递减的值(基于降序标记),要么使用相同的endkeyas startkey并设置inclusiveEnd为true
这两个选项都应该可以正常工作.(我只测试了那个,endkey=42但他们都应该工作)