Validation 使用INSERT aql with arangodb跳过无效文档并从单个文件上载有效文档

Validation 使用INSERT aql with arangodb跳过无效文档并从单个文件上载有效文档,validation,insert,arangodb,aql,nosql,Validation,Insert,Arangodb,Aql,Nosql,我使用以下aql查询将文档从文件上载到数据库中,@file INSERT document into@@collection LET newDoc=NEW RETURN newDoc“。 我已经为集合中的所有属性创建了一个唯一的哈希索引,因此,当尝试上载重复文档时,我会收到一个错误(我希望如此),但是该文件中的任何文档都不会上载到数据库。 我想知道是否有一种方法可以使用aql查询只上传有效的文档,而跳过错误的文档(在我的例子中是重复的文档) 更新: 我正在使用python,我可以通过以下方式逐个

我使用以下aql查询将文档从文件上载到数据库中,@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查询,而不是“手动”逐个上载您可以在查询中指定
ignoreErrors:true
,如下所示:

FOR document in @file 
  INSERT document INTO @@collection OPTIONS {ignoreErrors: true}
  RETURN NEW
然后,它将忽略有冲突的文档,并且只返回那些实际创建的文档

如果您尝试只返回
\u键
字段,则每个失败的文档都会得到一个
null

FOR document in @file 
  INSERT document INTO @@collection OPTIONS {ignoreErrors: true}
  RETURN NEW._key
结果如下所示,第一个是重复的,第二个是新生成的
\u键
,值为
23225

[ 
  null, 
  "23225" 
]