【问题标题】:How do you query a CouchDB view that emits complex keys?如何查询发出复杂键的 CouchDB 视图?
【发布时间】:2015-06-22 20:06:05
【问题描述】:

给定一个 CouchDB 视图,它发出以下格式的键:

[ "part1", { "property": "part2" } ]

如何找到具有给定值part1 的所有文档?

如果part2 是一个简单的字符串而不是一个对象startkey=["part1"]&endkey=["part1",{}] 就可以了。 CouchDB docs 声明如下:

查询startkey=["foo"]&endkey=["foo",{}] 将匹配第一个元素中带有“foo”的大多数数组键,例如["foo","bar"]["foo",["bar","baz"]]。但是它不会匹配["foo",{"an":"object"}]

很遗憾,文档没有提供有关如何处理此类密钥的任何建议。

【问题讨论】:

    标签: couchdb


    【解决方案1】:

    endkey 值的第二个元素必须是一个对象,该对象在键的第二个元素的任何可能值之后进行排序。对象按属性进行比较(例如,{"a":1} {"a":2} {"b":1}),因此最好的方法是将endkey 中的第一个属性名称设置为一个非常大的值:

    startkey=["part1"]&endkey=["part1", { "\uFFF0": false }]
    

    \uFFF0 的属性名称应该排在第二个关键元素中的任何其他属性名称之后,甚至在第二个元素是空对象或具有多个属性时也有效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-27
      • 2017-01-27
      • 2013-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多