从csv更新ArangoDB集合
我刚刚接触ArangoDB,您能告诉我如何执行以下更新吗 我有文档集合,每个文档都有一个属性从csv更新ArangoDB集合,arangodb,Arangodb,我刚刚接触ArangoDB,您能告诉我如何执行以下更新吗 我有文档集合,每个文档都有一个属性seen。我想通过以下方式更新csv文件中的现有集合:如果文件中有一行带有\u key的代码已经存在于集合中,我想将csv文件和集合中的值相加,并将集合中的值替换为总和;如果没有带有此类\u键的文档,我只想添加它 据我所知,这对于arangoimp工具来说有点太多了,因为它可以选择替换或忽略Dublicate 你会怎么做 如果您有任何想法,我将不胜感激。正如您所说,从arangoimp工具中要求太多了。如
seen
。我想通过以下方式更新csv文件中的现有集合:如果文件中有一行带有\u key
的代码已经存在于集合中,我想将csv文件和集合中的值相加,并将集合中的值替换为总和;如果没有带有此类\u键的文档,我只想添加它
据我所知,这对于arangoimp
工具来说有点太多了,因为它可以选择替换或忽略Dublicate
你会怎么做
如果您有任何想法,我将不胜感激。正如您所说,从arangoimp
工具中要求太多了。如果\u键
不存在,您可以使用它通过\u键
更新现有记录,替换seen
属性并创建新文档。但它不支持添加逻辑来总结所看到的值
但是,您可以使用arangoimp
将您的CSV导入临时集合,并使用AQL查询来完成此操作。让temp
成为临时收藏,然后coll
成为您的主要收藏:
FOR doc IN temp
UPSERT { _key: doc._key }
INSERT doc
UPDATE { seen: OLD.seen + doc.seen }
IN coll
如果需要,您可以选择使用导入文档中的属性替换现有文档,而不是更新或合并(),或者删除末尾的临时文档。正如您所说,从arangoimp
工具中要求太多。如果\u键
不存在,您可以使用它通过\u键
更新现有记录,替换seen
属性并创建新文档。但它不支持添加逻辑来总结所看到的值
但是,您可以使用arangoimp
将您的CSV导入临时集合,并使用AQL查询来完成此操作。让temp
成为临时收藏,然后coll
成为您的主要收藏:
FOR doc IN temp
UPSERT { _key: doc._key }
INSERT doc
UPDATE { seen: OLD.seen + doc.seen }
IN coll
如果需要,您可以选择使用导入文档中的属性替换现有文档,而不是更新或合并(),或者在最后删除临时文档。非常感谢您的回答。在这里等待的时候,我也有同样的想法,对于一个20万文档的“小”集合来说,效果很好。但后来我尝试对另一个400万文档大小的集合(这次是Edge集合)执行同样的操作,它工作了15分钟,没有任何结果。这在我的例子中太多了。我刚刚发现,如果我获取相同大小的csv,但对于边缘集合和执行相同的查询,执行所需的时间大约要长10倍。可能是因为这类集合的某些功能?临时集合是否具有来自
的\u和来自
的\u到
属性?由于需要维护额外的边缘索引,边缘集合的成本肯定更高。但是,我不确定10倍的速度是否正常。是的,临时集合和主集合都有3个属性:\u from
、\u to
和seed
。不同集合中具有相同边索引的文档具有不同的\u键。在你看来,如果我能使他们平等,这会有帮助吗?嗯,实际上是有帮助的。我过去常做UPSERT{{u-from:edge.\u-from,\u-to:edge.\u-to}
这件事,天知道要花多长时间,但当我做UPSERT{u-key:edge.\u-key}
时,4mil写入需要190秒。我也试着这么做,但是对于文档集合,大约需要160秒,所以我想,不会比这更快了。现在唯一的问题是我应该如何为一对\u从
-\u到
生成密钥,但这是另一回事。再次感谢你!非常感谢你的回答。在这里等待的时候,我也有同样的想法,对于一个20万文档的“小”集合来说,效果很好。但后来我尝试对另一个400万文档大小的集合(这次是Edge集合)执行同样的操作,它工作了15分钟,没有任何结果。这在我的例子中太多了。我刚刚发现,如果我获取相同大小的csv,但对于边缘集合和执行相同的查询,执行所需的时间大约要长10倍。可能是因为这类集合的某些功能?临时集合是否具有来自
的\u和来自
的\u到
属性?由于需要维护额外的边缘索引,边缘集合的成本肯定更高。但是,我不确定10倍的速度是否正常。是的,临时集合和主集合都有3个属性:\u from
、\u to
和seed
。不同集合中具有相同边索引的文档具有不同的\u键。在你看来,如果我能使他们平等,这会有帮助吗?嗯,实际上是有帮助的。我过去常做UPSERT{{u-from:edge.\u-from,\u-to:edge.\u-to}
这件事,天知道要花多长时间,但当我做UPSERT{u-key:edge.\u-key}
时,4mil写入需要190秒。我也试着这么做,但是对于文档集合,大约需要160秒,所以我想,不会比这更快了。现在唯一的问题是我应该如何为一对\u从
-\u到
生成密钥,但这是另一回事。再次感谢你!