繁体   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