我是noSQL,couchDB和mapreduce的新手,需要一些帮助。
我有同样的问题在这里讨论{How to use reduce in Fauxton},但不明白答案:
我有一个工作地图功能:
function (foo) {
if(foo.type == "blog post");
emit(foo)
}返回11个单独的文档。我想将其修改为返回foo.type和计数1。
function (doc) {
if(doc.type == "blog post");
return count(doc)
}和"_count“从减少面板,但显然是做了一些错误,因为视图不返回任何东西。
谢谢您的帮助和指导!
发布于 2017-08-01 21:40:16
地图
因此,当您构建map函数时,您实际上是在创建一个字典或映射,这是一个键:value数据结构。
您的map函数应该发出要查询的键。您也可以发出一个值,但是如果您只想获得相关的文档,则不需要发出任何值。为什么?因为有一个查询参数可以用来返回关联的文档(?include_docs=true)。
Reduce
然后,您可以使用result函数,该函数将为每个具有相同键的结果调用。使用相同键的每个结果都将通过您的减值函数进行处理,以减少值。
校正示例
因此,在您的例子中,您希望按我所设想的每种类型映射文档。
可以创建一个函数,该函数发出具有type属性的文档。
function(doc){
if(doc.type)
emit(doc.type);
}如果查询此视图,您将看到每一行的键都是文档的类型。如果您选择_count减少函数,那么您应该有每种类型的文档数量。
查询视图时,必须指定:group=true&reduce=true
此外,您还可以通过查询以下参数获得blog post类型的所有文档:?key="blog post"
发布于 2018-01-24 16:37:40
在福克斯顿,减少步骤是有点尴尬和不直观的发现。
https://stackoverflow.com/questions/45447354
复制相似问题