CouchDB 是否构建couchbdb视图以索引ID以三个或四个不同字符开头的所有文档?

uurv41yg  于 2022-12-09  发布在  CouchDB
关注(0)|答案(2)|浏览(146)

我是nosql和视图的新手。想知道是否有人可以告诉我如何建立索引,这样它将返回所有应用多个不同键的不同文档。下面是一个例子。
我有许多文档,它们都有如下命名约定:

AABA_August-11-2017_2017-06-29_10
BBY_August-11-2017_2017-06-29_10
CECO_January-19-2018_2017-06-08_19
GEL_December-15-2017_2017-06-08_1
Etc..

我想要一个视图,这样我就可以查询“以BBY开头”,例如。它会返回所有以BBY开头的文档。甚至可能是“BBY_December”,“BBY_August”等。
我想知道这是否可行,以及它会是什么样子。我正在使用CouchDB,它使用Mango来建立索引。如果有人能给我指出正确的方向,那也会有帮助。
谢谢

hc2pp10m

hc2pp10m1#

您可以编写这样的视图:

function(doc) {
    var docId = doc._id;
    var p = docId.substring(0, 2); // Or however many chars you want
    if (p === 'BBY') emit(doc._id, doc); // Or whatever kind of key you want
}

然后为备用前缀编写类似的视图。您还可以使用类似于_all_docs端点的查询参数和视图(http://docs.couchdb.org/en/2.0.0/api/ddoc/views.html)。
我认为使用视图而不是您所做的唯一好处是,您可以过滤不必要的字段,进行一些基本的转换等。
考虑到从_all_docs和从视图中检索的相似性,_all_docs端点看起来像是一个类似于自定义视图的索引。
不知道如何使用芒果做同样的事情。

wwwo4jvm

wwwo4jvm2#

我目前的命名惯例不需要新的索引。我使用蒲团来查找:

ip:port/DB/_all_docs?inclusive_end=true&start_key="BBY_Aug"&end_key="BBY_Auh"

相关问题