我正在尝试从 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 中缺少事务的问题?