我在我的项目中使用RethinkDB并具有以下表结构:
data_item {
id: "generated_thing",
slug: "slug"
}
aggregation_of_data_items {
items: ["some", "ids", "from", "data_item", "table"]
}
Run Code Online (Sandbox Code Playgroud)
当我从内容表中删除项目时,我希望保持数据一致 - 从aggregation_of_data_items.items数组中删除ID - 是否有机会在一个请求中执行此操作(类似于MongoDB中的$ pull或$ pullAll)?
要从数组中删除项目,您可以执行以下操作(这是在Python中,但它适用于任何支持的语言):
def remove(doc, value):
doc.replace(
lambda doc: doc.merge({"items" : doc["items"].set_difference([value])}))
Run Code Online (Sandbox Code Playgroud)
现在我们只需要运行一个同时执行这两种操作的查询,最简单的方法是将它们放在一个数组中:
[r.table("data_item").get(id).delete(),
remove(r.table("aggregation_of_..").get(...), id)]
.run()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1125 次 |
| 最近记录: |