作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试访问按“日期”键排序的表中恒定数量的最新文档。请注意,不幸的是,日期是被实现的(不是由我......),使得该值设置为字符串,例如“2014-01-14”,或者有时“2014-01-14 22:22:22” 。使用以下查询时,我收到“RqlRuntimeError:Array over size limit 102173”
错误消息:
r.db('awesome_db').table("main").orderBy(r.desc("date"))
我尝试通过指定一个常数限制来克服这个问题,因为现在我只需要最新的 50 个:
r.db('awesome_db').table("main").orderBy(r.desc("date")).limit(50)
最终出现同样的错误。所以,我的问题是:
如何按日期获取恒定数量的最新文档?
是否可以通过基于字符串的日期字段进行排序?这个问题和我的第一个问题有关系吗?
最佳答案
此处出现错误的原因是 orderBy
在 limit
之前进行评估,因此它对内存中超出数组限制的整个表进行排序。解决这个问题的方法是使用和索引。尝试执行以下操作:
table.indexCreate("date")
table.indexWait()
table.orderBy({index: r.desc("date")}).limit(50)
这应该与您在那里的内容相同,但使用索引,因此不需要将整个表加载到内存中。
关于rethinkdb: "RqlRuntimeError: Array over size limit"即使使用 limit(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21102344/
我正在尝试访问按“日期”键排序的表中恒定数量的最新文档。请注意,不幸的是,日期是被实现的(不是由我......),使得该值设置为字符串,例如“2014-01-14”,或者有时“2014-01-14 2
我是一名优秀的程序员,十分优秀!