CouchDB map/reduce函数按日期显示用户的有限结果

CouchDB map/reduce function to show limited results for a user by date

本文关键字:用户 结果 显示 日期 map reduce 函数 CouchDB      更新时间:2023-09-26

我是许多可能很难过渡到NoSQL世界的SQL用户之一,我有一个场景,我的数据库中有大量条目,但我只想获得最近的条目,这很容易,但它应该都是为同一个用户。我相信这很简单,但经过大量的试验和错误,没有一个好的解决方案,我请求你的帮助!

所以,我的钥匙是这样的…(因为我认为这是正确的方法!)

emit([doc.eventTime, doc.userId], doc);

我的问题是,我如何才能从CouchDB获得最后10个结果?对于那个特定的用户。我之所以把时间作为关键字,是因为我认为这是降序排序结果的最简单方法,例如,我想要最后十个动作。

如果我必须在SQL中这样做,我会这样做,给你一个确切的例子。

SELECT * FROM table WHERE userId = ID ORDER BY eventTime DESC LIMIT 10

我希望有人在那里可以帮助:-)

将密钥更改为:

emit([doc.userId, doc.eventTime], null);
查询:

view?descending=true&startkey=[<user id>,{}]&endkey=[<user id>]&limit=10

那么在视图中添加这样的内容…

"test": {
           "map": "function(doc) { key = doc.userId; value = {'time': doc.eventTime, 'userid': doc.userId}; emit(key, value)}"
       }

然后调用视图…(假设userId = "123"

http://192.168.xxx.xxx: 5984/dbname/_design/docname/_view/测试?关键= " 123 ",限制= 10

你将需要添加一些逻辑到地图,以获得最近的,因为我不相信秩序以任何方式保存。