egg*_*y84 7 couchdb nosql couchbase
任何人都可以向我解释为什么以下不起作用:
假设以下文档结构:
{
"_id": "520fb089a6cb538b1843cdf3cca39a15",
"_rev": "2-f96c27d19bf6cb10268d6d1c34799931",
"type": "nosql",
"location": "AZ",
"date": "2012/03/01 00:00:00",
"amount": 1500
}
Run Code Online (Sandbox Code Playgroud)
并且Map函数定义如下:
function(doc) {
var saleDate = new Date(doc.date);
emit([doc.location,saleDate.getFullYear(),saleDate.getMonth()+1],doc.amount);
}
Run Code Online (Sandbox Code Playgroud)
并使用内置_sum功能的减速机.
当你执行它(使用group = true)时,你会得到如下结果:
{"rows":[
{"key":["AZ",2012,2],"value":224},
{"key":["AZ",2012,3],"value":1500},
{"key":["WA",2011,12],"value":1965},
{"key":["WA",2012,1],"value":358}
]}
Run Code Online (Sandbox Code Playgroud)
现在,如果您将查询更改为以下内容:
http://127.0.0.1:5984/default/_design/nosql/_view/nosql_test?group_level=2
Run Code Online (Sandbox Code Playgroud)
你得到这样的结果:
{"rows":[
{"key":["AZ",2012],"value":1724},
{"key":["WA",2011],"value":1965},
{"key":["WA",2012],"value":358}
]}
Run Code Online (Sandbox Code Playgroud)
所以考虑到这一点,如果我想在2011年找到"WA"的所有销售,我不能执行这样的事情:
http://127.0.0.1:5984/default/_design/nosql/_view/nosql_test?group_level=2&key=["WA",2011]
Run Code Online (Sandbox Code Playgroud)
这个例子取自NoSQL磁带上的有用视频.
http://nosqltapes.com/video/understanding-mapreduce-with-mike-miller
您总是需要提供一系列键,因为过滤是在map结果上完成的,而不是在结果上reduce.
例如,以下参数应该有效(如果正确地进行了url编码):
?group_level=2&startkey=["WA",2011]&endkey=["WA",2011,{}]
Run Code Online (Sandbox Code Playgroud)
您可以阅读有关视图排序的信息,以了解它的工作原理.
| 归档时间: |
|
| 查看次数: |
3365 次 |
| 最近记录: |