如何查询发出复杂密钥的CouchDB视图?

时间:2015-06-22 20:06:05

标签: couchdb

给定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"}]

不幸的是,该文档没有提供任何关于如何处理此类密钥的建议。

1 个答案:

答案 0 :(得分:2)

endkey值的第二个元素需要是一个对象,它在键的第二个元素的任何可能值之后进行整理。对象按属性进行比较(例如,{"a":1}< {"a":2}< {"b":1}),因此最好的方法是在{中设置第一个属性名称{1}}到一个非常大的值:

endkey

startkey=["part1"]&endkey=["part1", { "\uFFF0": false }] 的属性名称应该在第二个键元素中的任何其他属性名称之后进行整理,甚至在第二个元素是空对象或具有多个属性时工作。