我正在尝试从一组对象中挑选出独特的元素,然后将它们保存到子集合中。
我的代码是:
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,它将确保写入完成,因此不会添加重复项,但似乎并非如此。
任何人都可以解释为什么会失败以及这样做的正确方法吗?
干杯
答案 0 :(得分:1)
想出来:
项['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})