mongodb python用条件更新子字段

时间:2015-04-28 16:49:44

标签: python mongodb

现在坐在这一段时间。我有一个数据库和一本字典。 db的结构如下:

    { 'label': 'Argiope',
  'uri': 'http://dbpedia.org/resource/Argiope_(spider)',
  'description': 'The genus Argiope includes rather large and spectacular spiders that often ...',
  'name': 'Argiope',
  'synonym': ["One", "Two"],
  'classification': {
                    'family': 'Orb-weaver spider',
                    'class': 'Arachnid',
                    'phylum': 'Arthropod',
                    'order': 'Spider',
                    'kingdom': 'Animal',
                    'genus': None
                    }
}

现在我想做的是,通过在分类字段中创建一个新条目来更新数据库。关键是始终是相同的“二项式权威”和价值,我的dict的价值。但我只想更新标签等于我的键的数据集(所以我只是更新正确的)

我开始时:

def update_db(data, db):
for key in data:
    db.arachnid.update({$set:{"classifaction".key:data[key]}})
pass

但这不起作用,但仍然缺少条件。任何人都知道该怎么做?

1 个答案:

答案 0 :(得分:1)

如果我正确理解您的问题,您的更新应该类似于:

db.arachnid.update({'label': 'binomialAuthority'}, {'$set': dict([('classification.' + key, value) for key, value in data.items()])}, multi=True)

修改

再次阅读你的问题,也许你正在寻找的是:

for key, value in data.items():
    db.arachnid.update({'label': key}, {'$set': {'classification.' + key: value}})