Mongo转换存储为字符串的所有数字字段

Hon*_*ner 5 javascript mongodb

看起来好像有一段时间我一直把我的小数存储为字符串.这是一个问题,因为我需要开始使用聚合框架来执行一些计算.

有没有办法在我的集合中遍历每个文档并检查每个值isNaN,如果为false,则将其存储parseFloat

Wir*_*rie 6

这样的东西应该来自mongo shell:

db.yourCollection.find({}).forEach(function(doc) { 
    if(isNaN(doc.xyz)) { 
        print('found string: ' + doc._id);
        db.yourCollection.update( 
           { _id: doc._id}, 
           { $set : { "xyz" : parseFloat(doc.xyz) } }
        )
    }
})
Run Code Online (Sandbox Code Playgroud)

它遍历每个文档,isNaN按照您的建议使用,然后使用当前文档$setsparseFloat值.