使用CouchDB查看通配符?

时间:2010-09-07 01:58:46

标签: nosql couchdb mapreduce

是否可以在CouchDB中的视图中使用通配符?例如,假设我有一个拥有球队,球员年龄,球员平均值和球员性别的数据库。然而,球员的年龄可能不知道 - 他们可能来自多米尼加共和国或诸如此类。所以我想使用一个可以接受没有玩家年龄的地图功能的视图。如果我想让团队中的平均分数最高,无论年龄或特定年龄,如果我想使用复合键,我该怎么办呢?例如,假设我的地图发射函数类似于:

emit([doc.team, doc.gender, doc.age], doc.average);

如果我想传递一个键来缩小它,但仍然考虑没有输入年龄的玩家,我该怎么办,所以不要:

http://127.0.0.1:5984/savings/_design/players/_view/average?key=["Yankees","male",8]

做一些包含这样的通配符的东西,以获得不论年龄的平均值:

http://127.0.0.1:5984/savings/_design/players/_view/average?key=["Yankees","male",*]

是否可以在CouchDB中编写一个视图来执行此类操作?或者我是否需要编写多个视图并单独处理它们?

谢谢,

2 个答案:

答案 0 :(得分:13)

您可以指定startkeyendkey并使用“通配符”{},这是一个JavaScript空对象:

http://127.0.0.1:5984/savings/_design/players/_view/average?startkey=["Yankees","male",0]&endkey=["Yankees","male",{}]

答案 1 :(得分:7)

无法使用通配符,但您可以指定startkeyendkey

http://127.0.0.1:5984/savings/_design/players/_view/average?startkey=["Yankees","male",0]&endkey=["Yankees","male",999]