我有以下代码:
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知道您要执行的操作并正确处理它。其他更新运算符以相同的方式工作。只有在一起的地方。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句