1

我正在使用以下 aql 查询将文档从文件上传到数据库"FOR document in @file INSERT document INTO @@collection LET newDoc = NEW RETURN newDoc"。我为集合中的所有属性创建了一个唯一的哈希索引,因此在尝试上传重复的文档时出现错误(我想要),但是文件中的所有文档都没有上传到数据库。我想知道是否有办法通过使用 aql 查询仅上传有效文件并跳过错误文件(在我的情况下是重复文件)。

更新:

我正在使用python,我可以将文档一一上传为:

for document in file:
    doc = collection.createDocument() #function from pyArango
    try:
        for key, value in document.iteritems():
            doc[key] =  value
            doc.save()
    except:
        print "wrong document"

我想知道是否可以使用 aql 查询而不是“手动”一一上传

4

1 回答 1

2

您可以像这样ignoreErrors: true在查询OPTIONS 语句中指定:

FOR document in @file 
  INSERT document INTO @@collection OPTIONS {ignoreErrors: true}
  RETURN NEW

然后它将忽略有冲突的文档,并且只返回那些实际创建的文档。

如果您尝试仅返回该_key字段,则null每个失败的文档都会得到一个:

FOR document in @file 
  INSERT document INTO @@collection OPTIONS {ignoreErrors: true}
  RETURN NEW._key

结果看起来像这样,第一个是重复的,第二个是_key用 value生成的23225

[ 
  null, 
  "23225" 
]
于 2016-04-28T13:31:37.810 回答