以下查詢應該執行。我把解釋作爲評論內的註釋。我的示例假定文檔存在於名爲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
來源
2017-10-12 06:04:22
stj
非常感謝您的詳細解答。 –