Arrays 如何过滤数据库中的数组大小?

Arrays 如何过滤数据库中的数组大小?,arrays,rethinkdb,rethinkdb-python,Arrays,Rethinkdb,Rethinkdb Python,我有一个表格,里面有一堆定期(部分)更新的文档 基本上,我要做的是创建另一个表(下面称为changes),该表存储每个文档的最新N个更改 因此,我正在执行table.changes()以获取表中的所有更改,计算我想要的差异信息(以下称为differentry),并将该信息预先添加到另一个表中的数组中: changes.get(doc_id).update({ 'diffs': R.row['changes'].prepend(diffentry) }).run() 这个棘手的问题是如何

我有一个表格,里面有一堆定期(部分)更新的文档

基本上,我要做的是创建另一个表(下面称为
changes
),该表存储每个文档的最新N个更改

因此,我正在执行
table.changes()
以获取表中的所有更改,计算我想要的差异信息(以下称为
differentry
),并将该信息预先添加到另一个表中的数组中:

changes.get(doc_id).update({
    'diffs': R.row['changes'].prepend(diffentry)
}).run()
这个棘手的问题是如何限制
diff
数组的大小

有一个数组方法
delete_at()
,它可以从数组中删除一个或多个项,我可以用“蛮力”调用它,比如:

delete_at(diff_limit, diff_limit + 10000)
忽略任何错误(疯狂的上限只是妄想症)。但那感觉有点脏

我认为一个更好的方法是对大于限制的数组进行过滤,并删除超出的位。伪:

changes.get(doc_id).filter(R.row['diffs'].length > diff_limit).update({
    'diffs': R.row['diffs'].delete_at(diff_limit, R.row['diffs'].length - 1)
}).run()
但是,唉,我发现没有
长度
。。。
关于如何以一种好的方式做这类事情,您有什么想法吗?

在JS中,您可以使用带有
.count()
的函数,如下所示:

update(function(doc){
       return {
          diffs: doc("diffs").deleteAt(diff_limit, doc("diffs").count())
       }
   }
).run()

我认为python中应该有类似的东西。

ehrm,这太令人尴尬了
count()
一定是我唯一没有尝试的。。。而且我从来没有将“流”——count的变体与数组count相关联,doh!但是谢谢!