【问题标题】:RethinkDB: removing item from array in one table by value from another tableRethinkDB:​​从另一个表中的值从一个表中的数组中删除项目
【发布时间】:2013-12-16 14:00:25
【问题描述】:

我在项目中使用 RethinkDB,表结构如下:

data_item {
    id: "generated_thing",
    slug: "slug"
}

aggregation_of_data_items {
    items: ["some", "ids", "from", "data_item", "table"]
}

当我从内容表中删除项目时,我想保持数据一致 - 从 aggregation_of_data_items.items 数组中删除 ID - 是否有机会在一个请求中执行此操作(类似于 MongoDB 中的 $pull 或 $pullAll)?

【问题讨论】:

    标签: rethinkdb


    【解决方案1】:

    要从数组中删除项目,您可以执行以下操作(这是在 Python 中,但它适用于任何受支持的语言):

    def remove(doc, value):
      doc.replace(
        lambda doc: doc.merge({"items" : doc["items"].set_difference([value])}))
    

    现在我们只需要运行一个同时执行两者的查询,最简单的方法是将它们放入一个数组中:

    [r.table("data_item").get(id).delete(),
     remove(r.table("aggregation_of_..").get(...), id)]
    .run()
    

    【讨论】:

      猜你喜欢
      • 2011-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-19
      • 2012-04-18
      • 2012-02-11
      相关资源
      最近更新 更多