2012-12-07 27 views
0

我有一堆數據庫。如果mongodb收集沒有值,那麼追加鍵值?

其中一些有「地位」,有些則沒有。

如何將'status':'pending'插入缺少'status'的集合 - 但不覆蓋已具有狀態的集合?

使用pymongo /瓶/ Python的2.7

我嘗試這樣做:

orders = monDB.find('order') 

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

但沒有任何反應。我究竟做錯了什麼?

回答

1

使用$ exists來檢查字段是否存在,如果沒有,則使用$ set來創建它。假設monDB是您的收藏:

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

在蒙戈外殼:

> 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

+0

你介意告訴我如何從mongo cli做到這一點?出於某種原因,我無法使用pymongo包裝器開發人員使用 –

+1

當然,添加了更新「myQueue」集合中沒有狀態的所有文檔的示例。 – kristina

相關問題