小编典典

如何更改字段的类型?

all

我正在尝试从 mongo shell 中更改字段的类型。

我正在做这个…

db.meta.update(
  {'fields.properties.default': { $type : 1 }}, 
  {'fields.properties.default': { $type : 2 }}
)

但它不工作!


阅读 97

收藏
2022-07-17

共1个答案

小编典典

更改$type数据的唯一方法是对数据具有正确类型的数据执行更新。

在这种情况下,您似乎正在尝试将$type 1 (double) 更改为 2
(string)

因此,只需从数据库加载文档,执行强制转换 ( new String(x)),然后再次保存文档。

如果您需要以编程方式完全从 shell 执行此操作,则可以使用find(...).forEach(function(x) {})语法。


回应下面的第二条评论。将字段bad从数字更改为集合中的字符串foo

db.foo.find( { 'bad' : { $type : 1 } } ).forEach( function (x) {   
  x.bad = new String(x.bad); // convert field to string
  db.foo.save(x);
});
2022-07-17