我正在尝试从 mongo shell 中更改字段的类型。
我正在做这个…
db.meta.update( {'fields.properties.default': { $type : 1 }}, {'fields.properties.default': { $type : 2 }} )
但它不工作!
更改$type数据的唯一方法是对数据具有正确类型的数据执行更新。
$type
在这种情况下,您似乎正在尝试将$type 1 (double) 更改为 2 (string)。
因此,只需从数据库加载文档,执行强制转换 ( new String(x)),然后再次保存文档。
new String(x)
如果您需要以编程方式完全从 shell 执行此操作,则可以使用find(...).forEach(function(x) {})语法。
find(...).forEach(function(x) {})
回应下面的第二条评论。将字段bad从数字更改为集合中的字符串foo。
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); });