Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops Pymongo迭代安全保存和计数_Loops_Insert_Count_Pymongo - Fatal编程技术网

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})