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!但是谢谢!