簡體   English   中英

在MongoDB中的一個查詢中更新字段和$ push to array

[英]Update field and $push to array in one query in MongoDB

我有這個代碼:

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]

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

您需要使用$set進行單值更新。 否則,這會嘗試將更新形式與普通對象和“更新”運算符混合。 MongoDB認為這只是一個普通的對象更新,因此告訴你“$ push”對於字段名稱是非法的:

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知道你要做什么並正確處理它。 其他更新運算符以相同的方式工作。 只有在一起的地方。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM