我正在使用cloudantDB,并希望查询一个视图,看起来像这样
function (doc) {
if(doc.name !== undefined){
emit([doc.name, doc.age], doc);
}
如果我有一个名称列表(我将使用选项'keys=[]')和年龄范围(其中startkey和endkey应使用)应该是什么正确的方式来获得结果
示例:我想得到名字为"约翰"或"马克"或"约瑟夫"或"桑托什"的人,年龄限制在20到30岁之间。
如果我去列表的名字,查询应该是keys=["john", ....]如果我选择年龄查询应该使用startkey和endkey
我想两者都做:)
谢谢
遗憾的是,您不能这样做。使用keys参数查询具有指定键的文档。例如,您不能只发送keys=["John","Mark"]&startkey=[null,20]&endkey=[{},30]。此查询将只和 only 返回名称为John和标记为空年龄的文档。
在你的问题中,你指定了CouchDB,但如果你正在使用Cloudant,索引查询可能会对你感兴趣。
你可以这样写:
{
"selector": {
"$and": [
{
"name": {
"$in":["Mark","John"]
}
},
{
"year": {
"$gt": 20,
"$lt": 30
}
}
]
},
"fields": [
"name",
"age"
]
}
对于CouchDB,您需要分离您的请求(1个请求用于年龄,1个请求用于人员),或者您在本地进行过滤。