gpt4 book ai didi

javascript - Couchdb使用reduce函数和startkey/endkey过滤结果

转载 作者:行者123 更新时间:2023-11-28 05:23:01 26 4
gpt4 key购买 nike

我有这样设置的文档:

{ _id: 1, name: "A", timestamp: 1478115739, type: "report" }
{ _id: 2, name: "B", timestamp: 1478103721, type: "transmission" }
{ _id: 3, name: "C", timestamp: 1473114714, type: "report" }

我正在尝试创建一个仅返回特定时间戳范围内的文档的 View 。我也希望能够按类型进行过滤。

这是我对数据的 javascript 调用:

db.query('filters/timestamp_type', { startKey: 1378115739, endKey: 1478115740  })
.then(function(resp) {
//do stuff
})

我只知道在哪里放置开始和结束时间戳。我很难弄清楚我应该在哪里说我只想返回报告

此外,这是我的过滤器的映射函数,显然还没有完成。我不确定如何访问开始和结束键。

function (doc) {
if(type == "report" && startKey >= doc.timestamp && endKey <= doc.timestamp)
emit(doc._id, doc.name);
}

我的问题仍然是:

  • 在哪里可以检索 map 函数中的开始键和结束键?
  • 如何添加附加类型过滤器以仅获取特定类型的报告。

我知道我可能需要使用reduce函数,但这超出了我的能力范围。这是默认的归约函数,但我不确定它如何与 map 函数一起使用。

function (keys, values, rereduce) {
if (rereduce) {
return sum(values);
} else {
return values.length;
}
}

谢谢您,任何帮助或指导将不胜感激。

最佳答案

使用 map 函数获取特定类型的报告 -

function(doc) {
if(doc.type == "report") {
emit(doc.timestamp, doc);
}
}

查询 View 时,只会返回“report”类型的文档。如果您需要支持多种类型,则必须为每种类型创建一个新 View 。

要查询此 View 并指定开始和结束时间戳,只需将它们添加到您的查询中即可 -

curl -XGET http://localhost:5984/<your-database>/_design/docs/_view/<your-view-name>?startkey="1478115739"&endkey="1478103721"

Reference

关于javascript - Couchdb使用reduce函数和startkey/endkey过滤结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40388591/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com