pyt*_*tor 4 arrays rethinkdb rethinkdb-python
我有一张桌子,桌子上有一堆文件,这些文件会定期(部分)进行更新。
我本质上想做的是创建另一个表(changes以下称为表),该表存储每个文档的最新N个更改。
因此table.changes(),我要做的是获取表上的所有更改,计算所需的diff信息(diffentry在下面称为),然后将该信息添加到另一个表中的数组中:
changes.get(doc_id).update({
'diffs': R.row['changes'].prepend(diffentry)
}).run()
Run Code Online (Sandbox Code Playgroud)
这个棘手的地方是如何限制diffs数组的大小?
有一个delete_at()可以从数组中删除一个或多个项目的数组方法,我可以 “蛮力”调用,例如:
delete_at(diff_limit, diff_limit + 10000)
Run Code Online (Sandbox Code Playgroud)
并忽略任何错误(疯狂的上限只是偏执狂)。但这有点脏...
我认为更好,更好的方法是对大于限制的数组进行过滤并删除多余的位。伪:
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()
Run Code Online (Sandbox Code Playgroud)
但是,可惜,length我还没有发现……关于如何以一种不错的方式来做这种事情的任何想法?
在JS中,您可以使用如下函数.count():
update(function(doc){
return {
diffs: doc("diffs").deleteAt(diff_limit, doc("diffs").count())
}
}
).run()
Run Code Online (Sandbox Code Playgroud)
我认为在python中应该是类似的东西。