繁体   English   中英

CouchDB映射/归约功能可按日期显示用户的有限结果

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

我是可能很难过渡到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/test?key= “ 123”&limit = 10

您将需要在地图上添加一些逻辑以获取最新信息,因为我不认为订单会以任何方式保留。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM