我想从 ArangoDB 的文档中删除一个属性。
我认为正确的方法是使用函数UNSET(doc, attributeName1, ..., attributeNameN)
。然而,仅凭这一点,数据库中没有任何变化。
例子:
let target_key = "42"
FOR doc IN myCollection
FILTER doc._key == target_key
RETURN UNSET(doc, "myAttribute")
Run Code Online (Sandbox Code Playgroud)
该示例返回没有属性的原始文档myAttribute
,但新版本未保存到数据库中,因此这似乎只是一个投影副本。
或者,您可以设置要删除的属性null
并使用以下keepNull
选项:
LET target_key = "42"
FOR doc IN myCollection
FILTER doc._key == target_key
UPDATE doc WITH { myAttribute: null } IN myCollection
OPTIONS { keepNull: false }
RETURN NEW
Run Code Online (Sandbox Code Playgroud)
null
文档中具有显式值的属性将被保留。仅触及在WITH之后指定的属性。
注意:如果您解释查询,您将nullMeansRemove: true
在“写入查询选项”下看到而不是keepNull: false
。
对此的简单答案是UNSET
与REPLACE
函数结合。
UNSET
适用于单个文档中的属性,也REPLACE
适用于集合中的整个文档。
let target_key = "42"
FOR doc IN myCollection
FILTER doc._key == target_key
REPLACE UNSET(doc, "myAttribute") IN myCollection
RETURN NEW
Run Code Online (Sandbox Code Playgroud)
myAttribute
此示例返回已删除的新文档,UNSET
该文档已保存到集合中REPLACE
。
andNEW
关键字可以与and 一起OLD
使用。UPDATE
UPSERT
我读完这个问题后就明白了这一点。我觉得这是一个太简单的任务,无法坚持下去,但我希望这对我之后的人有用。
归档时间: |
|
查看次数: |
1190 次 |
最近记录: |