【问题标题】:Change int datatype to string in mongodb在 mongodb 中将 int 数据类型更改为 string
【发布时间】:2023-01-08 15:48:20
【问题描述】:
我正在尝试将 mongodb 中的 CardNumber 的 int 更改为 string。脚本显示执行成功但数据类型没有改变。请告诉我如何解决此问题。
GiftCardSale
[0]CardNumber
Amount
[1]CardNumber
Amount
db.SalesOrder2.find({"GiftCardSale.$[i].CardNumber": {$exists:true}}).sort({_id:1}).skip(0).limit(100)
.forEach( function(x) {
db.SalesOrder2.update({_id: x._id}, {$set: {"GiftCardSale.$[i].CardNumber":
x.GiftCardSale.$[i].CardNumber.toString()}});
}
);
【问题讨论】:
标签:
arrays
database
mongodb
mongodb-query
bulkupdate
【解决方案1】:
要更改 mongodb 中的多个字段数据类型:
在这种情况下,我们将字段数据类型从 int 更改为 string。
1.用数据库地址登录mongo shell(mongosh)
2.键入 mongosh 命令:show dbs 来查找你的数据库
3.type mongosh 命令:用于选择要更新的数据库
4.输入如下:
db.<dbname>.updateMany(
{ <field> : { $type: 16 } },
[{ $set: { <field>: { $toString: "$<field>" } } }]
)
5.宾果游戏!
PS:尖括号中的所有变量/字段,“”中的 AKA 应替换为您的实际变量/字段名称,例如将变为:
db.mydatabase.updateMany(
{ myfield : { $type: 16 } },
[{ $set: { myfield: { $toString: "$myfield" } } }]
)
对于其他情况,只需将函数从“toString”更改为您想要的其他函数即可。此外,如果你想将输入字段类型与其他格式(如字符串)匹配,你需要将 $type: 16 更改为 $type: 1
对于特定的型号匹配(有很棒的图表演示),请在下面结帐https://data-flair.training/blogs/mongodb-data-types/