2017-10-12 121 views

回答

2

以下查询应该执行。我把解释作为评论内的注释。我的示例假定文档存在于名为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

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