Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不知道如何在CouchDB中创建特定的MapReduce_Map_Couchdb_Mapreduce_Reduce - Fatal编程技术网

不知道如何在CouchDB中创建特定的MapReduce

不知道如何在CouchDB中创建特定的MapReduce,map,couchdb,mapreduce,reduce,Map,Couchdb,Mapreduce,Reduce,我的数据库中有3种类型的文档: { param: "a", timestamp: "t" } (Type 1) { param: "b", partof: "a" } (Type 2) { param: "b", timestamp: "x" } (Type 3) (我不能改变布局…;-() 类型1定义了一个开始时间戳,就像开始事件一样。类型1通过类型2文档连接到多个类型3文档 我想获得最新的Type3(最高时间戳)和相应的Type1文档 如何组织我的Map/Reduce?简单。对于高度相

我的数据库中有3种类型的文档:

{
param: "a",
timestamp: "t"
} (Type 1)

{
param: "b",
partof: "a"
} (Type 2)

{
param: "b",
timestamp: "x"
} (Type 3)
(我不能改变布局…;-()

类型1定义了一个开始时间戳,就像开始事件一样。类型1通过类型2文档连接到多个类型3文档

我想获得最新的Type3(最高时间戳)和相应的Type1文档


如何组织我的Map/Reduce?

简单。对于高度相关的数据,请使用关系数据库。

正如用户jhs在我之前所说的,您的数据是关系数据,如果您无法更改它,那么您可能希望重新考虑使用CouchDB

通过关系,我们的意思是,数据中的每个“类型1”或“类型3”文档“只知道”自身,“类型2”文档拥有关于其他类型文档之间关系的知识。使用CouchDB,您只能通过文档本身中的字段进行索引,并且在使用
includedocs=true
进行查询时,可以更深一层。因此,单次CouchDB查询无法实现您的要求,因为某些所需数据是两个远离所请求文档的级别

以下是一个双查询解决方案:

{
    "views": {
        "param-by-timestamp": {
            "map": "function(doc) { if (doc.timestamp) emit(doc.timestamp, [doc.timestamp, doc.param]); }",
            "reduce": "function(keys, values) { return values.reduce(function(p, c) { return c[0] > p[0] ? c : p }) }"
        },      
        "partof-by-param": {
            "map": "function(doc) { if (doc.partof) emit(doc.param, doc.partof); }"
        }       
    }   
}

首先使用
param by timestamp?reduce=true查询它,以获取
value[0]
中的最新时间戳及其在
value[1]
中对应的参数,然后使用
partof by param?key=“”
。如果您需要获取完整文档以及时间戳和参数,那么您必须使用
includedocs=true
,并提供正确的
\u doc
值。

我很难对您的数据结构进行思考,您能提供一些更真实的测试数据吗?我非常希望我想帮忙,但我真的理解得不够好。回答得好。难道用CouchDB不可能做到这一点吗?我知道这不是最优的,但我想学习;-)好吧,我今天过得更好,所以我将在单独的答案中拍摄我最好的CouchDB。为了学习,那太好了!但是,当我说“我不能改变数据结构”时,这是一个红旗提醒我要考虑一个模式和SQL数据库。