Couchdb 如何按时间戳返回最新记录?

Couchdb 如何按时间戳返回最新记录?,couchdb,cloudant,Couchdb,Cloudant,我有一个数据集,看起来与此类似: {"user":333,"product":943, "rating":2.025743791177902, "timestamp":1481675659} {"user":333,"product":3074,"rating":2.1070657532324493,"timestamp":1481675178} {"user":333,"product":3074,"rating":2.108323259636257, "timestamp":14816735

我有一个数据集,看起来与此类似:

{"user":333,"product":943, "rating":2.025743791177902, "timestamp":1481675659}
{"user":333,"product":3074,"rating":2.1070657532324493,"timestamp":1481675178}
{"user":333,"product":3074,"rating":2.108323259636257, "timestamp":1481673546}
{"user":333,"product":943, "rating":2.0211849667268353,"timestamp":1481675178}
{"user":333,"product":943, "rating":2.041045323231024, "timestamp":1481673546}
{"user":333,"product":119, "rating":2.1832303461543163,"timestamp":1481675659}
{"user":333,"product":119, "rating":2.1937538029700203,"timestamp":1481673546}
{"user":111,"product":123, ...
我想查询用户的所有记录(例如333),但只返回最新的时间戳:

{"user":333,"product":119, "rating":2.1832303461543163,"timestamp":1481675659}     
这是否可以通过map/reduce索引实现?如果是,怎么做


理想情况下,我还希望按照评级值进行排序。

如果您创建这样的映射函数

function(doc) {
  emit([doc.user, doc.timestamp], null);
}
将按用户和时间顺序创建索引

要返回给定用户的最新(最近)时间戳,可以使用以下参数查询索引:

startkey=[333,9999999999]
endkey=[333,0]
descending=true
limit=1

我们以相反的顺序查询索引,从该用户的最大时间戳开始,但将结果集大小限制为1-最新条目。

Downvoter-我不知道您不喜欢这个问题的原因以及如何改进它,除非您在downvote时添加注释。