0

我试图从对象集合中挑选出独特的元素,然后将它们保存到子集合中。

我的代码是:

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,它可以确保写入已完成,因此不会添加重复项,但似乎并非如此。

谁能解释为什么这会失败以及正确的做法?

干杯

4

1 回答 1

1

弄清楚了:

item['Summary']['Specs'] 条目本身就是一个字典,要搜索字典,您必须搜索每个单独的字典条目

例如,如果对象看起来像:

current_specs = {'field1': something, 'field2': something_else} 

然后我们可以通过以下方式找到它:

find({'Specs.field1':current_specs[field1], 'Specs.field2': current_specs[field2]})

你不能只使用:

find({'Specs':current_specs})
于 2012-05-21T18:10:41.783 回答