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