CouchDB -仅查询第一个键元素的数组键值

fnvucqvd  于 2023-02-01  发布在  CouchDB
关注(0)|答案(2)|浏览(146)

我使用数组键值设置了一个couchdb视图,格式如下:

[articleId, -timestamp]

我想查询具有相同文章ID的所有条目。所有时间戳都可以接受。
现在我使用的查询如下:

?startkey=["A697CA3027682D5JSSC",-9999999999999]&endkey=["A697CA3027682D5JSSC",0]

但我想要简单一点的。
有没有简单的方法可以完全通配符第二个关键元素?最简单的语法是什么?

eoxn13cs

eoxn13cs1#

首先,正如一条评论指出的,确实有一个特殊值{},它排在任何值之后,所以您的查询变成:

startkey=["target ID"]&endkey=["target ID",{}]

这相当于通配符匹配。
顺便说一句,不需要通过发出一个负时间戳来反转map函数中的顺序,您可以作为视图调用的一个选项来反转顺序(您的start和end键将交换)。

startkey=["target ID",{}]&endkey=["target ID"]&descending=true
hgc7kmma

hgc7kmma2#

作为将来的参考,在CouchDB 3中,可以使用"\ufff0"代替{}{}将排在字符串或数字之后,对象之前。
CouchDB 3 docs
请注意,{}不再是合适的"high"键标记值。请改用类似"\ufff0"的字符串。
查询startkey =["foo"]& endkey =["foo",{}]将匹配第一个元素中带有"foo"的大多数数组键,例如["foo","bar"]和["foo",["bar","baz"]]。但是,它将不匹配["foo",{" an ":" object "}]

相关问题