【问题标题】:How to use Map-Reduce for Groupbased Filtering?如何使用 Map-Reduce 进行基于组的过滤?
【发布时间】:2017-10-02 07:20:19
【问题描述】:

我对这个 map-reduce 东西很陌生,我正在使用它来过滤我网站上的用户。

我想问的是如何在其中进行基于组的过滤?

让我向您解释一下场景:- 我想过滤掉用户在特定日期之间提出的查询,例如从:-1/01/2016 到:-03/02/2016。

我通过运行 MR 函数获取下面给出的数据,我还想在 Cloudant 上再次运行 Reduce 函数,以便获取特定日期之间的查询

我正在使用 Cloudant、Mongodb、Couchdb 和 JavaScript。

感谢您回复并抽出宝贵时间阅读我的查询。抱歉,如果您理解查询时遇到的麻烦,因为我对这一切都很陌生。

【问题讨论】:

  • 请向我们展示一些示例数据并指定您希望在哪些技术中使用此查询
  • @AndrzejSmyk 我目前正在使用 Cloudant。看到主要目的是我正在尝试建立一个站点或用户交互权,人们在那里提出与问题相关的查询。现在我只想制作一个页面,以便我了解在某些日期之间有多少以及与询问的主题查询相关。
  • 正如@AndrzejSmyk 指出的那样,问题仍然不是很清楚......假设您将拥有某种JS​​ON文档,您需要将日期作为字段之一并创建一个视图过滤掉它
  • @NeerajKrishna 请参阅上面的评论,了解我所拥有的数据,我现在通过在我的数据库上运行 MR 函数得到这个我希望如果用户输入他需要查询的开始和结束日期宣布的日期。 MR 应该在给定数据上运行并获取这些日期之间的查询。希望这次我清楚了。

标签: javascript mongodb mapreduce couchdb cloudant


【解决方案1】:

如果查询中的日期是在运行时动态提供的,那么视图可能不是正确的方法。您可以使用 Cloudant Query 在运行时运行动态查询。例如,您可以像这样在日期字段上创建索引:

{
  "index": {
    "fields": [
      "mydate"
    ]
  },
  "type": "json"
}

然后在 Cloudant 查询中使用以下选择器:

"selector": {
   "$and": [
      {"mydate" : { "$gt": 1506874127 }},
      {"mydate": { "$lt": 1506960651 }}
   ]
}

我在这个例子中使用的是 unix 时间戳。

或者,您可以使用 Cloudant 搜索。在 Cloudant 中创建类似于以下内容的搜索索引:

{
  "_id": "_design/allDocs",
  "views": {},
  "language": "javascript",
  "indexes": {
    "byMyDate": {
      "analyzer": "standard",
      "index": "function (doc) {\n  if (doc.mydate) {\n    index(\"mydate\", doc.mydate);\n  }\n}"
    }
  }
}

在使用 Cloudant 仪表板时,这对应于以下内容:

设计文档 = allDocs

索引名称 = byMyDate

索引函数 =

function (doc) {
  if (doc.mydate) {
    index("mydate", doc.mydate);
  }
}

然后您可以使用范围运行搜索。例如,

https://<YOUR_INSTANCE>.cloudant.com/<YOUR_DB>/_design/allDocs/_search/byMyDate?q=mydate%3A[1506874127%20TO%201506960651]

这里的搜索查询是:

mydate:[1506874127 TO 1506960651]

再次,我使用的是 unix 时间戳。我相信你也可以使用日期字符串。

Cloudant 查询:https://console.bluemix.net/docs/services/Cloudant/api/cloudant_query.html

Cloudant 搜索:https://console.bluemix.net/docs/services/Cloudant/api/search.html#search

【讨论】:

  • JSON 文档是什么样的?您可以使用上述两个选项之一,而不是使用视图。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-30
  • 2022-01-12
  • 1970-01-01
  • 2023-03-23
  • 2021-07-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多