我使用数组键值设置了一个couchdb视图,格式如下:
[articleId, -timestamp]
我想查询具有相同文章ID的所有条目。所有时间戳都可以接受。现在我使用的查询如下:
?startkey=["A697CA3027682D5JSSC",-9999999999999]&endkey=["A697CA3027682D5JSSC",0]
但我想要简单一点的。有没有简单的方法可以完全通配符第二个关键元素?最简单的语法是什么?
eoxn13cs1#
首先,正如一条评论指出的,确实有一个特殊值{},它排在任何值之后,所以您的查询变成:
{}
startkey=["target ID"]&endkey=["target ID",{}]
这相当于通配符匹配。顺便说一句,不需要通过发出一个负时间戳来反转map函数中的顺序,您可以作为视图调用的一个选项来反转顺序(您的start和end键将交换)。
startkey=["target ID",{}]&endkey=["target ID"]&descending=true
hgc7kmma2#
作为将来的参考,在CouchDB 3中,可以使用"\ufff0"代替{},{}将排在字符串或数字之后,对象之前。从CouchDB 3 docs:请注意,{}不再是合适的"high"键标记值。请改用类似"\ufff0"的字符串。查询startkey =["foo"]& endkey =["foo",{}]将匹配第一个元素中带有"foo"的大多数数组键,例如["foo","bar"]和["foo",["bar","baz"]]。但是,它将不匹配["foo",{" an ":" object "}]
"\ufff0"
2条答案
按热度按时间eoxn13cs1#
首先,正如一条评论指出的,确实有一个特殊值
{}
,它排在任何值之后,所以您的查询变成:这相当于通配符匹配。
顺便说一句,不需要通过发出一个负时间戳来反转map函数中的顺序,您可以作为视图调用的一个选项来反转顺序(您的start和end键将交换)。
hgc7kmma2#
作为将来的参考,在CouchDB 3中,可以使用
"\ufff0"
代替{}
,{}
将排在字符串或数字之后,对象之前。从CouchDB 3 docs:
请注意,{}不再是合适的"high"键标记值。请改用类似"\ufff0"的字符串。
查询startkey =["foo"]& endkey =["foo",{}]将匹配第一个元素中带有"foo"的大多数数组键,例如["foo","bar"]和["foo",["bar","baz"]]。但是,它将不匹配["foo",{" an ":" object "}]