arangodb AQL如何修改嵌套数组中对象的值?

问题描述:

我的文档组织这样的方式:arangodb AQL如何修改嵌套数组中对象的值?

{ 
    "email": "[email protected]", 
    "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 
+0

非常感谢您的详细解答。 –