gpt4 book ai didi

arrays - 如何在rethinkdb中过滤数组大小?

转载 作者:行者123 更新时间:2023-12-05 00:58:20 24 4
gpt4 key购买 nike

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

我本质上要做的是创建另一个表(下面称为 changes)来存储对每个文档的最新 N 次更改。

我这样做 table.changes()获取表上的所有更改,计算我想要的差异信息(在下面称为 diffentry)并将该信息添加到另一个表中的数组中:

changes.get(doc_id).update({
'diffs': R.row['changes'].prepend(diffentry)
}).run()

这个棘手的一点是如何限制 diffs 的大小大批?

有一个数组方法 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()

但是,唉,没有 length ,我发现...
关于如何以一种好的方式做这种事情的任何想法?

最佳答案

在 JS 中,您可以使用带有 .count() 的函数像这样:

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

我认为在python中应该是类似的。

关于arrays - 如何在rethinkdb中过滤数组大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32736336/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com