CouchDB:获取唯一值
CouchDB: Get unique values
我有一个数据库,需要在其中获取一些值。该数据库由包含房间的文件组成,每个房间都有"楼层"answers"酒店"(还有一些,但它们在这里并不重要)。
问题是;我需要把我要的酒店的所有楼层都安排好。getAllFloorsOnHotel("hotel")
之类的东西。但是我不知道如何查询数据库。我在这里读到:http://guide.couchdb.org/editions/1/en/cookbook.html#unique,但这不是我所需要的。在那里,他们将密钥与group=true
一起使用来删除重复项,如果地板是密钥,这将起作用,但在我的情况下,酒店是密钥。因此,如果我使用group=true
,我自然只能在那家酒店住一层。如果我不使用group=true
,我会取回指定酒店的所有楼层——有重复的楼层。
我如何才能让couchdb让我回到酒店的所有楼层,而不重复?
您需要为键使用一个数组。
在你的地图功能中,你的发射应该是这样的:
emit([doc.hotel, doc.floor], null);
我为该值设置了null,但它可以是您想用于reduce函数的任何值。要获得每个酒店的每个楼层的列表,您的reduce函数可以返回true。
然后,当您进行查询时,请使用group_level而不是group,并将其分配给您希望按其分组的阵列的级别。group_level=2将按楼层分组。
要使用curl查询房间,请访问:
curl -X GET http://localhost:5894/yourDB/yourView?group_level=2
这将为您提供所有酒店及其所有楼层。要获得特定酒店的列表,您需要查询一个范围。很难展示如何使用curl实现这一点,因为必须对数组字符串执行各种操作才能使其工作。您需要的变量是startkey和endkey。您可能正在使用ajax,所以只需将这些作为选项传递即可。
startkey: ["hotelName", 0],
endkey: ["hotelName", {}],
group_level: 2
0和{}只是低值和高值。{}是最后排序的,所以无论你的字符串是什么,都将介于这两个东西之间。
此外,如果使用降序:true,则需要切换0和{}。(这让我很痛苦)
这里有更多信息:CouchDB在同一视图中排序和过滤
- 在数据库中循环值时,为输入框获取唯一值
- 获取唯一值并使用javascript计算金额总和
- JavaScript:从对象数组中获取唯一值及其计数
- 获取唯一的项目-Handlebars
- 如何唯一地获取推送 ID
- Ember JS如何获取具有唯一属性值的数组
- 上传时获取唯一号码
- 基于单个属性从数组中获取唯一对象
- 如何从自动增长到POST的列表中获取所有唯一元素
- 从数组中获取最高但也是唯一的数字
- 如何从多个唯一id中获取值
- 从jQuery .change上具有相同类的不同复选框中获取唯一字段
- 从多个对象获取唯一键
- 如何从 JavaScript 中的字符串中获取唯一字符列表
- 获取对象的唯一标识符
- 从对象数组中获取唯一元素数组
- 基于两个属性从 javascript 中的对象数组中获取唯一数组
- 如何在 jQuery 中获取唯一项
- 有没有办法获取谷歌浏览器实例的唯一标识符
- 使用 YUI 动态获取班级的唯一编号