【发布时间】:2011-10-28 08:06:32
【问题描述】:
我在我的 python 代码中使用远程 mongodb 数据库。访问数据库的代码和数据库本身位于两台不同的机器上。我使用的 pymongo 模块版本是 1.9+。 该脚本由以下代码组成:
for s in coll.find({ "somefield.a_date" : { "$exists":False },
"somefield.b_date" : { "$exists":False }}):
original = s['details']['c_date']
utc = from_tz.localize(original).astimezone(pytz.utc)
s['details']['c_date'] = utc
if str(type(s['somefield'])) != "<type 'dict'>":
s['somefield'] = {}
s['somefield']['b_date'] = datetime.utcnow()
coll.update({ '_id' : s['_id'] }, s );
运行这段代码后,发生了一件奇怪的事情。最初的集合中有数百万条记录,运行脚本后,只剩下总记录的 29%,其余的被自动删除。 PyMongo 驱动程序版本 1.9+ 是否存在任何已知问题? 这可能是什么其他原因以及我可以找出到底发生了什么的任何方法?
【问题讨论】:
-
你应该使用
if isinstance(s['somefield'], dict):而不是if str(type(s['somefield'])) != "<type 'dict'>":——它更具可读性和pythonic