RethinkDB:​​通过另一个表中的值从一个表中的数组中删除项

 刻骨铭心2502914183_610 发布于 2023-02-10 10:34

我在我的项目中使用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)?

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()
    

    2023-02-10 10:35 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有