【发布时间】:2017-11-03 11:17:17
【问题描述】:
我在 Mongoldb 中的字段是; id、website_url、状态。
我需要找到 website_url 并将其状态更新为 3 并添加一个名为 err_desc 的新字段。
我有一个 website_urls 列表,它的状态和它的 err_desc。
下面是我的代码。
client = MongoClient('localhost', 9000)
db1 = client['Company_Website_Crawl']
collection1 = db1['All']
posts1 = collection1.posts
bulk = posts1.initialize_ordered_bulk_op()
website_url = ["http://www.example.com","http://example2.com/"]
err_desc = ["error1","error2"]
for i in website_url:
parsed_uri = urlparse(i)
domain = '{uri.scheme}://{uri.netloc}/'.format(uri=parsed_uri)
final_url = domain
final_url_strip = domain.rstrip("/")
print i,final_url,final_url_strip,"\n"
try:
k = bulk.find({'website_url':i}).upsert().update({'$push':{'err_desc':err_desc,'status':3}})
k = bulk.execute()
print k
except Exception as e:
print "fail"
print e
错误
发生失败批处理操作错误
fail 批量操作只能执行一次。
一开始我用的是
k = posts1.update({'website_url':final_url_strip},{'$set':{'err_desc':err_desc,'status':3}},multi=True)
对于 500 万条记录来说太慢了。所以我想使用批量更新选项。请帮助我在这种情况下使用批量更新插入。
【问题讨论】:
标签: python mongodb mongodb-query pymongo