Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.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
如何将以下MySQL模式转换为CouchDB?_Mysql_Database_Couchdb - Fatal编程技术网

如何将以下MySQL模式转换为CouchDB?

如何将以下MySQL模式转换为CouchDB?,mysql,database,couchdb,Mysql,Database,Couchdb,我不确定如何在CouchDB中设计以下问题 我有一个logger web应用程序,可以跟踪仓库中的物品数量。为了简化问题,我们只需要知道目前仓库中的物品总数,以及每个物品在发货前在仓库中停留的时间。假设仓库只有鞋子,但每只鞋子都有不同的id,需要通过id跟踪 谢谢如果每只鞋都是一个文档,有一个date\u in和date\u out,那么如果date\u out为空,你的reduce函数将为+1,如果date\u out不为空,你的reduce函数将为+0(无变化)。这会告诉你仓库里鞋子的总数

我不确定如何在CouchDB中设计以下问题

我有一个logger web应用程序,可以跟踪仓库中的物品数量。为了简化问题,我们只需要知道目前仓库中的物品总数,以及每个物品在发货前在仓库中停留的时间。假设仓库只有鞋子,但每只鞋子都有不同的id,需要通过id跟踪


谢谢

如果每只鞋都是一个文档,有一个
date\u in
date\u out
,那么如果
date\u out
为空,你的reduce函数将为+1,如果
date\u out
不为空,你的reduce函数将为+0(无变化)。这会告诉你仓库里鞋子的总数

要计算每只鞋的平均时间,您需要知道在仓库中的时间。所以reduce函数只是简单地累加平均值。由于reduce函数必须是可交换和关联的,因此使用不同的平均算法。最简单的方法是减少到
[sum,count]
数组,其中
sum
是所有鞋的所有时间的累加器,而
count
是计数鞋数的计数器。然后,客户机只需除以
sum/count
即可计算出最终平均值

我想如果你愿意的话,你可以把这两个因素合并成一个大减量,也许可以建立一个
{“shoes in warehouse”:1,“average time in warehouse”:[253,15]}
类的对象


但是,如果可以接受此数据的两个不同视图,则有一个平均值的快捷方式。在地图中,
emit(null,time)
其中
time
是在仓库中花费的时间。在reduce中,将整个reduce值设置为
\u stats
(请参阅)。视图输出将是一个已经计算了
计数的对象。

jhs的答案很好,但我只想补充一点:


要使用内置的reduce函数进行平均值计算(在您的例子中是_stats),必须使用两个“独立”视图。但是如果map函数完全相同,CouchDB将检测到这一点,而不会为第二个视图生成一个全新的索引。通过这种方式,您可以使用一个map函数来提供多个reduce函数。

我是CouchDB的新手,非常想了解您刚才所说的内容。你能解释得更详细些吗?也许可以添加一个小例子。我将尝试解释:)CouchDB中的每个视图都由一个映射函数和一个可选的reduce函数组成。它们在所谓的设计文件(带有“_design/”前缀的文件)中指定。每个设计文档可以指定多个视图,这些视图将作为一个组进行处理。现在,如果在同一个设计文档中指定两个视图,使用相同的映射函数,但使用不同的reduce函数,CouchDB将只运行一次映射阶段。
MySQL schema looks like this

    id       name        date-in       data-out
    1        shoe       08/0/2010      null
    2        shoe       07/20/2010     08/01/2010


The output will be
    Number of shoe in warehouse:  1 
    Average time in warehouse:    14 days