如何通过键和字符串搜索查询CouchDB

时间:2018-12-13 07:26:35

标签: database nosql couchdb

我是CouchDB的新手,并且我有这样的文档:

{
    "credit_type" : "ADJ",
    "particular" : "Adjusted hours on 2018-01-01"
}

然后我有一个使用此Map函数的视图

function(doc) {
   if(doc.credit_type == "ADJ") { emit(doc.particular, doc); }  
}

我的查看网址是这样的:

http://mywebsite.com:5984/_utils/database.html?client_docs/_design/adj/_view/adj

我想做的是能够查询与我的搜索关键字匹配的文档。查找字段是particular字段。

搜索键是一个类似2018-01-01的日期,当我输入它们时,它们搜索的网址是类似

http://black-widow.remotestaff.com:5984/client_docs/_design/adj/_view/adj?key=20180-01-01

我应该能够在2018-01-01字段中获取包含particular字符串的记录

我还没有任何reduce功能

1 个答案:

答案 0 :(得分:0)

要按某个键进行搜索,必须发出该键。

为使您能够执行此操作,建议您将日期可能从particular字段移到其自己的字段中,这样,您就不必在{{1}上进行任何字符串解析}字段以获取您的日期。

如果您不这样做或不能这样做,则必须解析特定字段的日期。这可以通过this question and answer. *

来实现

一旦获得日期,就需要发出它,所以让我举个例子。

particular

在这里,我们从function(doc){ String date = doc.particular.parse.date.here(); emit([date, doc.credit_type], doc.particular); } 字段中解析日期,并将其与信用类型一起发出。现在,您可以按原样保留doc.particular语句,但是这样做意味着您可以仅通过if来搜索任何credit_type

现在您的密钥应为ADJ2018-01-01

*您需要确保CouchDB版本的JS支持这些功能。