Loops Pymongo迭代安全保存和计数
我试图从对象集合中挑选出唯一的元素,然后将它们保存到子集合中 我的密码是:Loops Pymongo迭代安全保存和计数,loops,insert,count,pymongo,Loops,Insert,Count,Pymongo,我试图从对象集合中挑选出唯一的元素,然后将它们保存到子集合中 我的密码是: for item in db.col1.find({'Summary': {'$ne':{}}}): current_specs = item['Summary']['Specs'] if not db.col1.specs.find({'Specs':current_specs}).count(): db.col1.specs.save({'Specs':current_specs, '
for item in db.col1.find({'Summary': {'$ne':{}}}):
current_specs = item['Summary']['Specs']
if not db.col1.specs.find({'Specs':current_specs}).count():
db.col1.specs.save({'Specs':current_specs, 'Updated': datetime.datetime.now()},safe=True)
这将在db.col1.specs中生成重复条目。我认为通过使用safe=True,可以确保写入已完成,因此不会添加重复项,但情况似乎并非如此
有人能解释一下为什么失败以及正确的方法吗
干杯解决了这个问题:
条目['Summary']['Specs']本身就是一个字典,要搜索字典,您必须搜索每个单独的字典条目
e、 g.如果对象看起来像:
current_specs = {'field1': something, 'field2': something_else}
然后我们可以通过以下途径找到它:
find({'Specs.field1':current_specs[field1], 'Specs.field2': current_specs[field2]})
你不能只使用:
find({'Specs':current_specs})