如何为集合C中的每个文档分配一个来自数组的唯一值



如何为集合C中的每个文档分配数组中的唯一值?

假设我创建了数组let A = 1..count(C)。我如何给C中的每个文档一个来自a的数字,并确保a中的每个元素只使用一次?

不幸的是,在AQL中没有类似python的迭代器enumerate()zip(),这将使这非常容易和有效。然而,这仍然是可能的,但是对于非常大的数据集来说,这可能是一个昂贵的操作(主要是内存密集型的),因为所有的文档键都需要被获取并存储在内存中:

LET arr = RANGE(1, LENGTH(C) * 2, 2)
LET docs = (FOR doc IN C RETURN doc._key)
FOR n IN 0..LENGTH(docs)-1
    UPDATE docs[n] WITH {number: arr[n]} IN test
    RETURN NEW

生成一个数组arr(这里:与集合C中的文档数量一样多的奇数),变量docs保存C的所有文档密钥。在0..范围内的循环。n (n = C中的文档数)用于计数器n。然后,使用docs的第n个文档密钥,使用数组arr中的第n个数字更新文档。

如果您想分配A = 1..LENGTH(C),那么可以使用一个稍微简单的查询:

LET docs = (FOR doc IN C RETURN doc._key)
FOR n IN 1..LENGTH(docs)
    UPDATE docs[n-1] WITH {number: n} IN test
    RETURN NEW

相关内容

最新更新