2014-10-27 48 views
1

我有這樣的代碼:

db.basket.update(
    {'_id': ObjectId(data['basket_id'])}, 
    { 
     'total': round(total, 2), 
     '$push': { 
      products': { 
       'prod_id': data['prod_id'], 
       'price': price, 
       'amount': data['amount'] 
      } 
     } 
    } 
) 

運行該查詢給我一個錯誤:

uncaught exception: field names cannot start with $ [$push] 

是否有可能在更新數據庫中的字段對象並將新對象推入數組?

回答

2

您需要使用$set進行單個值更新。否則,這會嘗試將更新的形式與一個普通對象和一個「更新」運算符混合。 MongoDB的認爲這只是一個簡單的對象更新,從而告訴你,「$推」是一個字段名非法:

db.basket.update(
    {'_id': ObjectId(data['basket_id'])}, 
    { 
     '$set': { 'total': round(total, 2) }, 
     '$push': { 
      products': { 
       'prod_id': data['prod_id'], 
       'price': price, 
       'amount': data['amount'] 
      } 
     } 
    } 
) 

因此,使用正確的操作在這裏,讓我們的MongoDB知道你正在嘗試做的,並對其進行處理正確。其他update operators以同樣的方式工作。只有在一起的地方。

+0

謝謝!完美的作品。我知道應該有一些竅門。 – hydeparkk 2014-10-27 23:13:29