如何查询发出复杂键的CouchDB视图?
给定发出以下格式密钥的CouchDB视图:如何查询发出复杂键的CouchDB视图?,couchdb,Couchdb,给定发出以下格式密钥的CouchDB视图: [ "part1", { "property": "part2" } ] 如何查找具有给定值的第1部分的所有文档 如果part2是一个简单的字符串而不是一个对象startkey=[“part1”]&endkey=[“part1”,{}]就可以工作了。缔约国声明如下: 查询startkey=[“foo”]&endkey=[“foo”,{}]将使大多数数组键与第一个元素中的“foo”匹配,例如[“foo”,“bar”]和[“foo”,[“bar”,“ba
[ "part1", { "property": "part2" } ]
如何查找具有给定值的第1部分的所有文档
如果part2
是一个简单的字符串而不是一个对象startkey=[“part1”]&endkey=[“part1”,{}]
就可以工作了。缔约国声明如下:
查询startkey=[“foo”]&endkey=[“foo”,{}]
将使大多数数组键与第一个元素中的“foo”匹配,例如[“foo”,“bar”]
和[“foo”,[“bar”,“baz”]
。但是,它将不匹配[“foo”,“an”:“object”}]
不幸的是,文档没有提供任何关于如何处理此类键的建议。您的endkey
值的第二个元素需要是一个对象,该对象在您的键的第二个元素的任何可能值之后进行整理。对象按属性逐属性进行比较(例如,{“a”:1}
{“a”:2}{“b”:1}
),因此最好的方法是将结束键中的第一个属性名设置为非常大的值:
startkey=["part1"]&endkey=["part1", { "\uFFF0": false }]
\uFFF0
的属性名称应在第二个键元素中的任何其他属性名称之后进行排序,甚至在第二个元素为空对象或具有多个属性时也有效