mongodb - 如何更改字段的类型?

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

我正在这样做……

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

但它不起作用!

最佳答案

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

在这种情况下,您似乎正在尝试更改 $type from 1 (double) to 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);
});

https://stackoverflow.com/questions/4973095/

相关文章:

mongodb - Mongodb中的保存和插入有什么区别?

node.js - 在 Mongoose 中,我如何按日期排序? (node.js)

node.js - mongoError : Topology was destroyed

mongodb - 如何在 mongodb 上导入 .bson 文件格式

linux - 在 linux/OS X 上启动 mongod 服务的正确方法是什么?

mongodb - 了解 MongoDB BSON 文档大小限制

mongodb - Node.js Mongoose.js 字符串到 ObjectId 函数

mongodb - 如何解决 MongoDB 中缺少事务的问题?

javascript - 我可以按日期查询 MongoDB ObjectId 吗?

mongodb - 如何在一个命令中停止 mongo DB