在mongodb中将int数据类型更改为string

qfe3c7zg  于 2023-01-08  发布在  Go
关注(0)|答案(1)|浏览(861)

我正在尝试将卡号的int在mongodb中更改为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()}});
    }
);
lvmkulzt

lvmkulzt1#

要在mongodb中更改多个字段的数据类型:
在本例中,我们将字段的数据类型从int更改为string。
1.使用数据库地址登录mongo shell(mongosh)
2.键入mongosh命令:显示dbs到查找你的数据库
3.键入mongosh命令:用于选择要更新的数据库
4.输入如下:

db.<dbname>.updateMany(
  { <field> : { $type: 16 } },
  [{ $set: { <field>: { $toString: "$<field>" } } }]
)

5.bingo!
PS:尖括号中的所有变量/字段,即""中的变量/字段应替换为实际变量/字段名称,例如将变为:

db.mydatabase.updateMany(
  { myfield : { $type: 16 } },
  [{ $set: { myfield: { $toString: "$myfield" } } }]
)

对于其他情况,只需将函数从"toString"更改为其他所需的函数。此外,如果您希望将输入字段类型与其他格式(如字符串)匹配,则需要更改$type:16到$类型:1
对于特定的型号匹配(有一个很棒的图形演示),请查看https://data-flair.training/blogs/mongodb-data-types/

相关问题