构建couchbdb视图以索引ID以各种三个或四个字符开头的所有文档?

时间:2017-08-22 21:09:57

标签: couchdb mangodb couchdb-mango nosql

我是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来构建索引。如果有人能指出我正确的方向,也会有所帮助。

由于

2 个答案:

答案 0 :(得分:1)

你可以这样写一个这样的观点:

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端点只是与自定义视图类似的索引。但我不确定。

不确定如何使用芒果来做同样的事情。

答案 1 :(得分:0)

我当前的命名约定不需要新的索引。我用被褥找到:

>>> pd.date_range(dt.datetime(2016,12,30), dt.datetime(2017,2,2)).to_series() \
        + MonthEnd(n=0) - MonthBegin(n=1)

2016-12-30   2016-12-01
2016-12-31   2016-12-01
2017-01-01   2017-01-01
2017-01-02   2017-01-01
...
2017-01-31   2017-01-01
2017-02-01   2017-02-01
2017-02-02   2017-02-01