我有一个cloudant数据库,其中每个文档如下所示:
{
"_id": "2015-11-20_attr_00",
"key": "attr",
"value": "00",
"employeeCount": 12,
"timestamp": "2015-11-20T18:16:05.366Z",
"epocTimestampMillis": 1448043365366,
"docType": "attrCounts"
}
对于给定的属性,有员工人数。如您所见,我每天都有相同属性的记录。我正在尝试创建一个视图或索引,该视图或索引将为我提供此属性的最新记录。这意味着,如果我在2015-10-30插入了一条记录,在2015-11-10插入了另一条记录,那么返回给我的那条记录只是该雇员的时间戳为2015-11-10的记录。
我已经尝试过查看,但是我正在获取每个属性的所有条目,而不仅仅是最新的。我没有查看索引,因为我认为它们没有得到预先计算。我将从客户端查询此信息,因此预先计算它(如视图)很重要。
任何指导将不胜感激。谢谢你
我创建了一个测试数据库,您可以在这里看到。只要确保将JSON文档插入Cloudant(或CouchDB)时,时间戳不是字符串而是JavaScript数据对象:
https://examples.cloudant.com/latestdocs/_all_docs?include_docs=true
我建立了一个这样的搜索索引(将设计文档命名为“ summary”,将搜索索引命名为“ latest”): function (doc) { if ( doc.docType == "totalEmployeeCounts" && doc.key == "div") { index("division", doc.value, {"store": true}); index("timestamp", doc.timestamp, {"store": true}); } }
然后是一个查询,该查询将仅返回每个部门的最新记录。请注意,限制值将应用于每个组,因此,在limit = 1的情况下,如果有4个组,您将获得4个文档而不是1个。
https://examples.cloudant.com/latestdocs/_design/summary/_search/latest?q=*:*&limit=1&group_field=division&include_docs=true&sort_field=-timestamp
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句