0

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

其中一些具有“状态”,而另一些则没有。

如何将 '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'

但什么也没有发生。我究竟做错了什么?

4

1 回答 1

1

使用 $exists 检查字段是否存在,如果不存在则使用 $set 创建它。假设 monDB 是您的集合:

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

在 mongo 外壳中:

> 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

于 2012-12-07T19:26:27.280 回答