数据插入如下。
{“键1”:20.05,“键2”:21.24 }
它应该存储为 Double,但该值存储为 String,并且当返回文档时,该值是,
{“key1”:“20.05”,“key2”:“21.24”}
是否有办法将数据类型更新为双倍而不扫描每个文档?
笔记
默认情况下,除非通常过度转换,否则所有内容numbers都存储在 MongoDB 中。double
MongoDB 4.2 版本以上
您可以通过聚合更新字段的类型数据。$key2下面是将字段中的数据类型更改为 的聚合查询示例double。
db.collection.aggregate([
{
$set: {
key2: { $toDouble: '$key2' },
},
},
])
Run Code Online (Sandbox Code Playgroud)
如果要转换的数据
double无法更改(例如:“4Bn”),则会出现错误。为了防止这种情况,您可以使用名为$convert的附加运算符。
参考: $toDouble
MongoDB 3.2 版本以上
在此版本中,MongoDB 尚不支持$set聚合运算符。因此,您必须使用find、forEach和手动执行此操作updateOne。
使用外壳的示例mongo:
db.collection.find({}).forEach(function (doc) {
db.collection.updateOne(
{
_id: doc._id,
},
{
$set: {
key2: NumberInt(doc.key2),
},
}
)
})
Run Code Online (Sandbox Code Playgroud)
参考: NumberInt
| 归档时间: |
|
| 查看次数: |
6397 次 |
| 最近记录: |