4

我正在尝试访问按“日期”键排序的表的恒定数量的最新文档。请注意,不幸的是,日期是由(不是我......)实现的,因此该值被设置为字符串,例如“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. 是否可以按基于字符串的日期字段排序?这个问题与我的第一个问题有关吗?

4

3 回答 3

3

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

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

这应该等同于您在那里的内容,但使用索引,因此不需要将整个表加载到内存中。

于 2014-01-13T22:48:28.703 回答
0

此代码是决策问题。

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

于 2018-09-18T15:54:07.337 回答
0

// 这个 Python 代码 r.db('awesome_db').table("main").run(sesion, r.runOpts{arrayLimit: 500000})

于 2018-09-21T07:18:20.563 回答