2014-01-13 61 views
3

我试图访问由“日期”键排序的表的最新文档的常量数量。请注意,不幸的是,该日期已实现(不是由我......),以便将该值设置为字符串,例如“2014-01-14”,或有时“2014-01-14 22:22:22” 。使用下面的查询时,我得到一个"RqlRuntimeError: Array over size limit 102173"错误消息:rethinkdb:“RqlRuntimeError:数组超过大小限制”即使使用限制()

r.db('awesome_db').table("main").orderBy(r.desc("date")) 

我试图通过指定一定的限度来克服这个问题,因为现在我只需要最新的50:

​​

以相同的错误结束。所以,我的问题是:

  1. 我怎样才能得到一个恒定数量的最新文件的日期?

  2. 是否可以通过基于字符串的日期字段进行排序?这个问题与我的第一个问题有关吗?

回答

3

你在这里得到一个错误的原因是limit所以订单内存整个表是在阵列限制之前的orderBy被评估。解决这个问题的方法是使用和索引。试着做以下几点:

table.indexCreate("date") 
table.indexWait() 
table.orderBy({index: r.desc("date")}).limit(50) 

这应该是等同于你有什么存在,但使用一个索引,因此不需要加载整个表到内存中。