更新嵌套地图 dynamodb

2023-12-31

我有一个 dynamodb 表,其属性包含嵌套地图,我想更新通过过滤器表达式过滤的特定库存项目,该表达式会从此地图中生成单个项目。

如何编写更新表达式以将位置更新为名称=opel、标签包括“x1”(也可能还有 f3)的项目的“到位三”? 这应该只更新第一个列表元素的位置属性。

  {
    "inventory": [
    {
      "location": "in place one",      # I want to update this
      "name": "opel",
      "tags": [
        "x1",
        "f3"
      ]
    },
    {
      "location": "in place two",
      "name": "abc",
      "tags": [
        "a3",
        "f5"
      ]
    }],
    "User" :"test" 
  } 

更新的答案 - 基于更新的问题陈述

您可以使用以下命令更新嵌套映射中的属性更新表达式 https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.UpdateExpressions.html这样,只有项目的一部分会得到更新(即 DynamoDB 会将补丁应用于您的项目),但是,由于 DynamoDB 是一个文档数据库,因此所有操作(Put、Get、Update、Delete 等)都可以进行该项目作为一个整体。

所以,在你的例子中,假设User是分区键并且没有排序键(在该示例中我没有看到任何可能是排序键的属性),更新请求可能如下所示:

table.update_item(
  Key={
    'User': 'test'
  },
  UpdateExpression="SET #inv[0].#loc = :locVal",
  ExpressionAttributeNames={
    '#inv': 'inventory',
    '#loc': 'location'
  },
  ExpressionAttributeValues={
    ':locVal': 'in place three',
  },
)

也就是说,您必须知道项目架构是什么样的,以及项目中的哪些属性应该准确更新。

DynamoDB 无法对子项进行操作。这意味着,无法告诉 Dynamo 执行诸如“更新项目,设置‘库存’数组元素的‘位置’属性,其中‘名称’属性等于‘欧宝’”

这可能不是您所希望的答案,但它是今天可用的答案。通过稍微更改架构,您也许可以更接近您想要的。

如果您需要按名称引用子项,可能存储如下内容:

{
  "inventory": {
    "opel": {
       "location": "in place one",      # I want to update this
       "tags": [ "x1", "f3" ]
    },
    "abc": {
       "location": "in place two",
       "tags": [ "a3", "f5" ]
    }
  },
  "User" :"test" 
} 

那么你的查询将是:

table.update_item(
  Key={
    'User': 'test'
  },
  UpdateExpression="SET #inv.#brand.#loc = :locVal",
  ExpressionAttributeNames={
    '#inv': 'inventory',
    '#loc': 'location',
    '#brand': 'opel'
  },
  ExpressionAttributeValues={
    ':locVal': 'in place three',
  },
)

但 YMMV 即使这样也有局限性,因为您只能通过名称来识别库存物品(即您仍然不能说“用标签'x1'更新库存”)

最终,您应该仔细考虑为什么需要 Dynamo 为您执行这些复杂的操作,而不是具体说明要更新的内容。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

更新嵌套地图 dynamodb 的相关文章

  • 查找 with: 块中定义的函数

    这是一些代码理查德 琼斯的博客 http www mechanicalcat net richard log Python Something I m working on 3 with gui vertical text gui labe
  • 使用 python 制作本地服务器应用程序的最佳方法

    我想要简单轻松地集成 python 和 vba 人们 如果他们在阅读本文后亲自见到我 阅读本文可能会杀了我 但我正在使用 django 开发服务器来实现此目的 有没有什么简单又好的方法 仅举个例子 我想使用 python 模块 openpy
  • python 可以检测它运行在哪个操作系统下吗?

    python 可以检测操作系统 然后为文件系统构建 if else 语句吗 我需要将 Fn 字符串中的 C CobaltRCX 替换为 FileSys 字符串 import os path csv from time import strf
  • 如何屏蔽 PyTorch 权重参数中的权重?

    我正在尝试在 PyTorch 中屏蔽 强制为零 特定权重值 我试图掩盖的权重是这样定义的def init class LSTM MASK nn Module def init self options inp dim super LSTM
  • 为什么我不能导入 geopandas?

    我唯一的代码行是 import geopandas 它给了我错误 OSError Could not find libspatialindex c library file 以前有人遇到过这个吗 我的脚本运行得很好 直到出现此错误 请注意
  • 在 Python 中使用 XPath 和 LXML

    我有一个 python 脚本 用于解析 XML 并将某些感兴趣的元素导出到 csv 文件中 我现在尝试更改脚本以允许根据条件过滤 XML 文件 等效的 XPath 查询将是 DC Events Confirmation contains T
  • 使用 Django 的 post_save() 信号

    我有两张桌子 class Advertisement models Model created at models DateTimeField auto now add True author email models EmailField
  • 如何用 python 和 sympy 解决多元不等式?

    我对使用 python 和 Sympy 还很陌生 并且遇到了使用 sympy 解决多元不等式的问题 假设我的文件中有很多函数 如下所示 cst sqrt x 2 cst exp sqrt cst x 1 4 log log sqrt cst
  • 使用正则表达式解析 Snort 警报文件

    我正在尝试使用 Python 中的正则表达式从 snort 警报文件中解析出源 目标 IP 和端口 和时间戳 示例如下 03 09 14 10 43 323717 1 2008015 9 ET MALWARE User Agent Win9
  • 无法包含外部 pandas 文档 Pycharm v--2018.1.2

    我无法包含外部 pandas 文档Pycharm v 2018 1 2 例如 numpy gt http docs scipy org doc numpy reference generated module name element na
  • Python:当前目录是否自动包含在路径中?

    Python 3 4 通过阅读其他一些 SO 问题 似乎如果moduleName py文件位于当前目录之外 如果要导入它 必须将其添加到路径中sys path insert 0 path to application app folder
  • 字典的嵌套列表

    我正在尝试创建dict通过嵌套list groups Group1 A B Group2 C D L y x 0 for y in x if y x 0 for x in groups d k v for d in L for k v in
  • 负整数的Python表示

    gt gt gt x 4 gt gt gt print b format x x 4 100 gt gt gt mask 0xFFFFFFFF gt gt gt print b format x mask x mask 4294967292
  • 在 pip.conf 中指定多个可信主机

    这是我尝试在我的中设置的 etc pip conf global trusted host pypi org files pythonhosted org 但是 它无法正常工作 参考 https pip pypa io en stable
  • 在pycharm中调试python代码

    这个问题类似于this https stackoverflow com questions 10240018 how to use pycharm to debug python script一 我正在尝试调试pyethapp https
  • 使用 lambda 函数更改属性值

    我可以使用 lambda 函数循环遍历类对象列表并更改属性值 对于所有对象或满足特定条件的对象 吗 class Student object def init self name age self name name self age ag
  • Scrapy 蜘蛛无法工作

    由于到目前为止没有任何效果 我开始了一个新项目 python scrapy ctl py startproject Nu 我完全按照教程操作 创建了文件夹和一个新的蜘蛛 from scrapy contrib spiders import
  • asyncio - 多次等待协程(周期性任务)

    我正在尝试为异步事件循环创建定期任务 如下所示 但是我收到 RuntimeError 无法重用已等待的协程 异常 显然 asyncio 不允许等待相同的可等待函数 如中讨论的这个错误线程 https bugs python org issu
  • 如何在单独的文件中使用 FastAPI Depends 作为端点/路由?

    我在单独的文件中定义了一个 Websocket 端点 例如 from starlette endpoints import WebSocketEndpoint from connection service import Connectio
  • PyQt 中的线程和信号问题

    我在 PyQt 中的线程之间进行通信时遇到一些问题 我使用信号在两个线程 发送者和监听者 之间进行通信 发送者发送消息 期望被监听者接收 但是 没有收到任何消息 谁能建议可能出了什么问题 我确信这一定很简单 但我已经环顾了几个小时但没有发现

随机推荐

  • 推后选项卡消失 ionic 3

    我的标签在使用后消失this navCtrl push NamePage 看不懂 需要使用 ViewChild或者其他功能 我已经设定tabsHideOnSubPages on false in 应用程序模块 ts 例子 https git
  • jinja2 从模板加载模板文件

    有没有办法可以从另一个模板文件中加载 jinja2 模板 就像是 render template path to file html 我有一些想要重用的片段 因此拥有此功能对我来说很重要 include file 做这个 请参阅jinja2
  • Jupyter 密码未经过哈希处理

    当我尝试设置 jupyter 笔记本密码时 打开 jupyter notebook config json 文件时没有获得密码哈希 这是 json 文件的输出 NotebookApp password argon2 argon2id v 1
  • 在不同网站应用程序之间共享 ASP.NET .ascx 控件的最佳方式?

    假设 IIS 中有 2 个不同的 ASP NET 应用程序 此外 您还希望在这两个应用程序之间共享一些 ASCX 控件 创建 用户控件库 的最佳方法是什么 以便您可以在两个应用程序中使用相同的控件实现 而不必重复代码 控件有 ASCX 后面
  • ASP.NET Web API 记录入站请求内容

    我正在尝试注销 Web API 请求内容 即 json 字符串 我实现了一个 ITraceWriter 类 example http www asp net web api overview testing and debugging tr
  • 如何在单个 ssh 命令中使用 bash $(awk)?

    我正在尝试执行一个命令ssh包含首先执行的 子代码 或 子代码 我一直使用它 但我不知道其正式名称 但在目标服务器上 为了便于讨论 假设这是我要使用的命令 当然这可以通过hostname 但这只是一个简化的示例 其中包含我想要使用的所有格式
  • 如何评估gcc格式-溢出检查大小72

    我的示例代码 t c include
  • Firebase 推送通知不适用于 TestFlight/adHoc 版本

    我开发了一个带有推送通知的应用程序 我将其上传到 AppStore 一切正常 通知确实到达了 我现在已经更新了应用程序 以便在用户点击通知时打开网址 在调试模式下使用通过电缆连接的设备进行测试时 一切正常 问题是 如果我通过 TestFli
  • Android - 卸载时删除 SD 卡上的文件

    我的应用程序在安装时从服务器下载一些多媒体文件 我这样做是为了节省应用程序的大小空间 但是 这种方法的缺点是 当卸载应用程序时 它不会删除这些文件 我看过报道说这是可能的 但我似乎无法让它发挥作用 有没有办法在卸载时执行此操作 或者我应该忘
  • C# - 装箱/拆箱/类型转换整数问题。我不明白

    我很难理解这一点 考虑以下示例 protected void Page Load object sender EventArgs e No surprise that this works Int16 firstTest Convert T
  • 如何在反应本机中获取文件夹大小和长度

    如何获取文件夹大小和文件夹中文件的数量 我尝试使用react native fs readDir let pat2 RNFS DocumentDirectoryPath myFolder RNFS readDir pat2 then res
  • 洪水填充算法 - 忽略边缘

    到目前为止 我已经实现了洪水填充算法 我想调整它 这样它就可以去掉边缘 为了演示这一点 我上传了一张图片 图1是我要修改的图像 图 3 是我的算法应该做的事情 图2是我当前的结果 所以在这种情况下 targetColor 是白色 repla
  • 如何限制APK不从“Android设备”卸载[重复]

    这个问题在这里已经有答案了 我已经开发了 Android 应用程序 甚至安装到了设备中 但是如何防止应用程序 apk不被设备的其他人 用户卸载 问候 阿南德 你不能
  • Magento 自定义模块:如何创建管理菜单

    Finder Setting 从管理菜单设置转到自定义模块的系统 配置的 url 应该是什么 menu menu
  • Vue i18n - 使用 routerview 将语言环境添加到 URL

    我正在使用带有 Vue JS 和 TypeScript 的脚手架 Asp Net Core 2 1 网站 我正在尝试整合kazupon i18n http kazupon github io 带有路由器视图的插件 如果没有 URL 集成 它
  • 在 JavaScript 中将日期时间字符串转换为 UTC

    我们如何在 JavaScript 中将日期时间字符串转换为 UTC 我们从 REST 服务获取以下 JSON CreationTime June 2 2015 8 04 53 PM IST category UI severity MAJO
  • ModelState 始终有效

    我有一些看似非常简单的东西不起作用 我有一个模型 public class Name Entity StringLength 10 Required public virtual string Title get set public cl
  • C# - 一个列表中的多个泛型类型

    这可能是不可能的 但我有这样的课程 public class Metadata
  • 如何使用 Flask 填充选择标签?

    我正在尝试在 python 中访问 JSON 对象列表 来自 mongo 以使用 Flask 模板填充下拉列表 随后 我需要访问所选项目 我很难填充列表 这是我的 python 代码和模板 有人能指出我正确的方向吗 我无法找到有关如何使用这
  • 更新嵌套地图 dynamodb

    我有一个 dynamodb 表 其属性包含嵌套地图 我想更新通过过滤器表达式过滤的特定库存项目 该表达式会从此地图中生成单个项目 如何编写更新表达式以将位置更新为名称 opel 标签包括 x1 也可能还有 f3 的项目的 到位三 这应该只更