lov*_*esh 10 mongodb pymongo mongodb-query
我有一个集合,其中我的所有文档至少有这两个字段,比如说name
和url
(其中url
唯一的所以我在其上设置了一个唯一的索引).现在,如果我尝试插入带有副本的文档url
,则会出错并停止程序.我不希望这种行为,但我需要这样的东西mysql
的insert or ignore
,所以MongoDB的不应该重复插入文档url
,并继续下一个文件.
是否有一些参数我可以传递给insert
命令来实现这种行为?我通常使用pymongo
as 做一批插入:
collection.insert(document_array)
Run Code Online (Sandbox Code Playgroud)
这collection
是一个集合,document_array
是一个文档数组.
那么有什么方法可以实现insert or ignore
多文档插入的功能吗?
Wil*_*yne 11
试试这个:
try:
coll.insert(
doc_or_docs=doc_array,
continue_on_error=True)
except pymongo.errors.DuplicateKeyError:
pass
Run Code Online (Sandbox Code Playgroud)
如果插入中发生错误(例如尝试为唯一索引插入重复值),插入操作仍将引发异常,但它不会影响数组中的其他项.然后,您可以吞下错误,如上所示.
bar*_*aso 11
使用insert_many(),并设置ordered = False.
这将确保尝试所有写入操作,即使存在错误:http: //api.mongodb.org/python/current/api/pymongo/collection.html#pymongo.collection.Collection.insert_many
为什么不将调用放入块.insert()
内try: ... except:
并在插入失败时继续?
此外,您还可以使用update()
带有upsert
标志的常规调用。详细信息请参见:http://www.mongodb.org/display/DOCS/Updating#Updating-update%28%29
归档时间: |
|
查看次数: |
14859 次 |
最近记录: |