使用CouchDB查看通配符?

use*_*293 7 couchdb mapreduce nosql

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

emit([doc.team, doc.gender, doc.age], doc.average);
Run Code Online (Sandbox Code Playgroud)

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

http://127.0.0.1:5984/savings/_design/players/_view/average?key=["Yankees","male",8]
Run Code Online (Sandbox Code Playgroud)

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

http://127.0.0.1:5984/savings/_design/players/_view/average?key=["Yankees","male",*]
Run Code Online (Sandbox Code Playgroud)

是否可以在CouchDB中编写一个视图来做这样的事情?或者我是否需要编写多个视图并单独处理它们?

谢谢,

nou*_*oun 13

您可以指定startkeyendkey使用"通配符" {},一个JavaScript空对象:

http://127.0.0.1:5984/savings/_design/players/_view/average?startkey=["Yankees","male",0]&endkey=["Yankees","male",{}]
Run Code Online (Sandbox Code Playgroud)


amo*_*fis 7

通配符不可用,但您可以指定startkeyendkey:

http://127.0.0.1:5984/savings/_design/players/_view/average?startkey=["Yankees","male",0]&endkey=["Yankees","male",999]
Run Code Online (Sandbox Code Playgroud)

  • endkey = ["Yankees","male",{}]应该更好,因为{}在任何数字后排序. (8认同)