Couchbase在给定的日期范围内获取文档

时间:2015-08-27 23:08:19

标签: java couchbase

这是我的桶中的文档结构。

 {
  "_class": "com.link.pojo.Event",
  "year": "2015",
  "start": 1440115200000,
  "name": "129811",
  "domain": "5000$3$2015$Exhibition",
  "sporttype": "Indoor",
  "eventtype": "Exhibition",
  "end": 1440151199000,
}

在这里开始平均事件开始日期,类型是util Date。示例日期格式值为2015-08-10T09:45:00.000+0000 现在我想使用couchbase视图获取当前日期开始的所有文档。这是我试图获得它的方式,

是什么
// Create the CouchbaseClient Query object & Pass the time range to fetch events.
Query query = new Query();
// Filter on the start date and this value has to be within below given range params.
query.setIncludeDocs(true);
query.setDescending(true);
query.setInclusiveEnd(true);
query.setRange(ComplexKey.of(""), ComplexKey.of(""));
List<Event> eventList = `eventService.getEventsByCurrentDate(query);`

我应该在query.setRange();函数中传递什么值。我需要实现的观点是什么?

function (doc, meta) {
  if (doc._class == "com.link.pojo.Event") {
    emit(doc.start, null);
  }
}

1 个答案:

答案 0 :(得分:2)

你做错了:]

查询只是一种过滤视图某些结果的方法。首先,定义一个视图 - 然后确定需要使用哪个查询来获得所需的内容。

  1. 首先在Couchbase UI中创建视图。

  2. 然后查看视图的结果 - 再次使用couchbase UI。应该有一个链接,您可以单击该链接以在浏览器的新选项卡中查看视图的结果。

  3. 然后,您可以将网址编辑为&#34;查询&#34;你的观点的结果。添加&#34;&amp; key = 123以获得该密钥。 SetRange只是意味着 - &#34;获取属于该数字范围的键&#34;。

  4. 在您的情况下,因为您的视图会发出&#34; start&#34;字段,您的密钥(或范围)必须采用相同的格式。所以像&amp; key = 1440115200000

  5. 我希望这会有所帮助。