对视图

时间:2016-09-22 12:21:57

标签: view mapreduce couchdb cloudant nosql

我正在使用cloudantDB,并希望查询看起来像这样的视图

function (doc) { if(doc.name !== undefined){ emit([doc.name, doc.age], doc); }

如果我有一个名单列表(我将使用选项' keys = []'为它)和一个年龄范围(对于哪个开始键),应该是获得结果的正确方法和endkey应该使用)

例子:我希望得到姓名" john"或"标记"或"约瑟夫"或者" santosh"年龄限制在20至30岁之间。

如果我去找名字列表,查询应该是键= [" john",....] 如果我去年龄查询应该使用startkey和endkey

我想两者兼顾:)

由于

1 个答案:

答案 0 :(得分:1)

不幸的是,你不能这样做。使用参数查询具有指定键的文档。例如,您不仅可以发送密钥= [“John”,“Mark”]& startkey = [null,20]& endkey = [{},30]。此查询只会且返回名称为 John 标记且年龄为null的文档。

在您的问题中,您指定了CouchDB,但如果您使用的是Cloudant,index query可能会对您感兴趣。

你可以有类似的东西:

{
  "selector": {
    "$and": [
      {
        "name": {
           "$in":["Mark","John"]
         }
      },
      {
        "year": {
          "$gt": 20,
          "$lt": 30
        }
      }
    ]
  },
  "fields": [
    "name",
    "age"
  ]
}

至于CouchDB,你需要分开你的请求(1个年龄请求和1个人),或者你在本地进行过滤。