couchDB-视图上的复杂查询



我正在使用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个请求用于人员),或者您在本地进行过滤。

相关内容

  • 没有找到相关文章

最新更新