arangodb AQL如何修改嵌套数组中对象的值?
我以这种方式组织了文件:arangodb AQL如何修改嵌套数组中对象的值?,arangodb,aql,Arangodb,Aql,我以这种方式组织了文件: { "email": "tyler_li@126.com", "name": "tyler", "address": { "street": "Beijing Road", "zip": 510000 }, "likes": [ "running", { "movie": "Star Wars" } ] } 我无法修改“电影”的值。你能帮我修改AQL值吗 谢谢 下面的查询应该可以。我将解释作为
{
"email": "tyler_li@126.com",
"name": "tyler",
"address": {
"street": "Beijing Road",
"zip": 510000
},
"likes": [
"running",
{
"movie": "Star Wars"
}
]
}
我无法修改“电影”的值。你能帮我修改AQL值吗
谢谢 下面的查询应该可以。我将解释作为注释放在查询中。我的示例假设文档存在于名为
collection
的集合中:
FOR doc IN collection
/* any filter condition to find the document(s) in question.
you should make sure this uses an index if there is a substantial
number of documents in the collection */
FILTER doc.name == 'tyler'
/* enumerate the old likes and return them as is if they are not
of type object or do not have a 'movie' attribute. If they are
objects and have a 'movie' attribute, patch them with a 'movie'
value of 'whatever' */
LET newLikes = (
FOR oldLike IN doc.likes
RETURN
(TYPENAME(oldLike) == 'object' && HAS(oldLike, 'movie')) ?
{ movie: 'whatever' } :
oldLike
)
/* finally update the matching document(s) with the new likes */
UPDATE doc WITH { likes: newLikes } IN collection
非常感谢您的详细回答。