我是CouchDB和面向文档的数据库的新手.
我一直在玩CouchDB,并且能够熟悉创建文档(使用perl)并使用Futon中的Map/Reduce函数来查询数据和创建视图.
我还想弄清楚的一件事是如何使用Futon的Map/Reduce来识别文档中的重复值.
例如,如果我有以下文件:
{
"_id": "123",
"name": "carl",
"timestamp": "2012-01-27T17:06:03Z"
}
{
"_id": "124",
"name": "carl",
"timestamp": "2012-01-27T17:07:03Z"
}
Run Code Online (Sandbox Code Playgroud)
我想获得一个具有重复"名称"值的文档ID列表,这是我可以用Futon Map/Reduce做的事情吗?
结果希望实现如下:
{
"name": "carl",
"dupes": [ "123", "124" ]
}
Run Code Online (Sandbox Code Playgroud)
..要么..
{
"carl": [ "123", "124" ]
}
Run Code Online (Sandbox Code Playgroud)
..这将是值,以及包含这些重复值的关联文档ID.
我已经尝试了Map/Reduce的一些不同的东西,但据我所知,Map函数在每个文档的基础上处理数据,而Reduce函数只允许你使用给定的键/值文献.
我知道我可以用Perl提取我需要的数据,在那里工作魔法,并得到我想要的结果,但我现在只想使用CouchDB来更好地理解它的好处/局限性.
我正在考虑这样做的另一种方法是使用像RDBMS表这样的单个文档:
{
"_id": "names",
"rec1": {
"_id": "123",
"name": "carl",
"timestamp": "2012-01-27T17:06:03Z"
},
"rec2": {
"_id": "124",
"name": "carl",
"timestamp": "2012-01-27T17:07:03Z"
}
}
Run Code Online (Sandbox Code Playgroud)
..这应该允许我按照我最初的想法使用Map/Reduce函数.但是我不确定这是否理想.
我知道我的思想仍然停留在RDBMS的土地上,所以我上面尝试做的很多事情可能都没有必要.任何有关这方面的见解将非常感激.
谢谢!
编辑:修复了一些示例中的JSON语法.
这是我正在使用的表格:
我想仅识别具有不同参数的重复扣减ID的ReviewID.
例如,在上图中,ReviewID 114具有两个不同的参数ID,但两个记录具有相同的扣除ID.
就我的目的而言,此记录(ReviewID 114)有错误.对于单个ReviewID,不应存在两个或多个具有相同扣减ID的唯一参数ID.
我想写一个查询来识别这些类型的记录,但我的SQL技能还没有.救命?
谢谢!
更新1:我正在使用TSQL(SQL Server 2008),如果这有助于
更新2:我正在寻找的输出将与上面的图像相同,减去任何与我所描述的标准不匹配的记录.
干杯!
我有一个开发人员做了一些更改,并要求我将它们合并.为了安全起见,我没有完全合并/提交他的工作,而是复制了他的分支,以便我可以做一个'bzr log --forward -n 0 -v | 少看到他的提交说明,并了解修改/添加的文件.
由于他做了几处修改,我不想一次性合并它们.相反,我想在审核之后一次一个地将他的更改提交给我的分支.
问题是,我没有看到他的更改的每个"合并提示"的任何修订ID.
例如,如果他在r250,251,252提交了更改,并且我将所有这些更改合并到工作树中,那么如何提交他的r250?我是否必须一次合并他的更改?或者有没有办法通过"合并提示"这样做?
我不确定合并提示有多有用,如果它们只显示注释,并且不提供单独合并每个提示的功能.
当然,我可能会遗漏一些常识; 如果是的话,请赐教.
首先十分感谢.