MongoDB如何将数字类型字段更新为含该数字的数组?
MongoDB将数字字段转为包含该数字的数组的正确方法
你之前的代码未生效,是因为普通的$set更新操作无法直接通过$balance引用原有字段值来构造数组——此时$balance会被当作字符串字面量处理。要实现需求,需要使用聚合管道式更新,也就是将更新操作以聚合阶段数组的形式传入:
Collection.updateMany( { balance: { $type: 'number' } }, [ { $set: { balance: ["$balance"] } } ] );
原理说明
当更新参数是聚合管道数组时,MongoDB会解析管道中的字段引用(如$balance),而不是将其视为普通字符串。这里的$set阶段会把原balance字段的数字值包裹进数组,再重新赋值给balance字段,从而得到你想要的文档结构。
执行后,原文档:
{ "_id":"myId", "balance":1 }
会被更新为:
{ "_id":"myId", "balance": [1] }
内容的提问来源于stack exchange,提问作者Andrew
相关产品推荐
相关产品推荐

