You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用SurrealDB.wasm批量更新维度下Unit的is_base属性

解决SurrealDB中批量更新维度关联单位的问题

问题分析

你尝试的UPDATE dimension:myDimensionID.units.* SET is_base = false无法生效,核心原因分为两种场景:

  • 若dimension.units是指向unit表的记录引用数组,该语句仅会修改dimension文档内部的引用对象副本,不会同步更新unit表中的实际记录。
  • 若units是嵌入在dimension中的对象数组,SurrealDB的.*语法无法直接遍历数组元素并修改属性。

解决方案

场景1:units是unit表的记录引用数组

通过子查询获取目标维度关联的所有unit ID,再批量更新unit表:

UPDATE unit 
WHERE id IN (SELECT value FROM dimension:myDimensionID.units) 
SET is_base = false;

场景2:units是dimension中的嵌入对象数组

使用array::map遍历数组,结合merge修改每个元素的is_base属性:

UPDATE dimension:myDimensionID 
SET units = array::map(units, fn($unit) => merge($unit, {is_base: false}));

结果验证

执行修改后,可通过以下语句确认结果:

-- 验证unit表记录(场景1)
SELECT * FROM unit WHERE id IN (SELECT value FROM dimension:myDimensionID.units);

-- 验证dimension文档中的嵌入数组(场景2)
SELECT units FROM dimension:myDimensionID;

内容的提问来源于stack exchange,提问作者Ólavur Nón

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 01:37:02