如果mongodb集合没有值,则附加键值?

时间:2012-12-07 19:16:59

标签: mongodb python-2.7 pymongo

我有一堆带有一堆集合的数据库。

他们中的一些人有'身份',有些则没有。

如何将'status':'pending'插入缺少'status'的集合中 - 但不会覆盖已经拥有状态的集合?

使用pymongo / flask / python 2.7

我试过了:

orders = monDB.find('order')

for order in orders:
    if not order['status']:
        monDB.update('order', {'status':'pending'})
        print 'success'

但没有任何反应。我做错了什么?

1 个答案:

答案 0 :(得分:1)

使用$ exists检查字段是否存在,如果不存在则设置为$。假设monDB是你的收藏:

monDB.update({'status': {'$exists' : False}}, {'$set' : {'status': 'pending'}}, multi=True)

在mongo shell中:

> db.myQueue.update({status: {$exists: false}}, {$set : {status: 'pending'}}, false, true)

请参阅http://docs.mongodb.org/manual/reference/operators/http://docs.mongodb.org/manual/applications/update/#crud-update-update