rethinkdb:“RqlRuntimeError:数组超出大小限制”即使使用limit()

时间:2014-01-13 22:07:36

标签: rethinkdb rethinkdb-python

我正在尝试访问由“date”键排序的表的常量数量的最新文档。请注意,遗憾的是,日期已经实现(不是由我...),以便将值设置为字符串,例如“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)

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

  1. 如何按日期获得一定数量的最新文件?

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

3 个答案:

答案 0 :(得分:3)

此处出现错误的原因是orderBylimit之前得到了评估,因此它会在内存中对整个表进行排序,这超出了数组限制。解决这个问题的方法是使用和索引。尝试执行以下操作:

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

这应该等同于你所拥有的但使用索引,因此不需要将整个表加载到内存中。

答案 1 :(得分:0)

此代码是决策问题。

ro:= r.RunOpts {ArrayLimit:500000}
r.DB(“ wrk”)。Table(“ log”)。Run(sessionArray [0], ro

答案 2 :(得分:0)

//此代码适用于Python r.db('awesome_db')。table(“ main”)。run(sesion,r.runOpts {arrayLimit:500000})