[英]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.