MongoDB 之 updateMany
使用
https://www.mongodb.com/docs/v6.0/reference/operator/update/#update-operators
db.collection.updateMany( , , { upsert: , writeConcern: , collation: , arrayFilters: [ , ... ], hint: // Available starting in MongoDB 4.2.1 })
常规用法之 Update document
使用
- 在这里的
$set
只能把字段的value变成固定值,既{field: value}
,没办法做过多转换
db.order.updateMany({"_id":"xxx"},{$set:{comment:"new comment"}});
updateMany 支持的 update operators
这些支持了我们大部分的使用场景,但是如果我想更新一个字段的类型呢?
更新字段类型语句
先说结果,感兴趣可以继续看下去
db.order_configs.updateMany( { "_id": "xxx" }, [ { $set: { "price": { $toDouble: "$price" } } } ]);
另有玄机之 Aggregation pipeline
Aggregation pipeline 中的 $set
https://www.mongodb.com/docs/v6.0/reference/operator/aggregation/set/#definition
可以看出来,这里的
$set
使用的是{ $set: { : , ... } }
, 而不再是一个简单的value.我们再来看看
是什么” />
这里有很多可操作的类型,就不枚举了。感兴趣看文档 https://www.mongodb.com/docs/v6.0/meta/aggregation-quick-reference/#std-label-aggregation-expressions
更新字段的类型
db.order_configs.updateMany( { "_id": "xxx" }, [ { $set: { "price": { $toDouble: "$price" } } } ]);
{ $toDouble: "$price" }
是一个 expression,"$price"
也是一个 expression. 前者是一个operator,后者是一个text,$
指当前文档
mongo的操作各式各样,感兴趣大家可以自行查看文档来寻找自己需要的功能