从MongoDB字段中删除引号
我有一个MongoDB收藏,里面有很多这样的唱片从MongoDB字段中删除引号,mongodb,numbers,quotes,Mongodb,Numbers,Quotes,我有一个MongoDB收藏,里面有很多这样的唱片 { "_id" : "500cecd97f3b198ba7aceea3", "startDate" : NumberLong("1343023785531"), "user_id" : "soggettoDGcfe", "app_source" : "Diary", "measuredValue":120, } 问题在于,由于应用程序的错误,有数百条记录的字段“measuredV
{
"_id" : "500cecd97f3b198ba7aceea3",
"startDate" : NumberLong("1343023785531"),
"user_id" : "soggettoDGcfe",
"app_source" : "Diary",
"measuredValue":120,
}
问题在于,由于应用程序的错误,有数百条记录的字段“measuredValue”为字符串:
{
"_id" : "ab0cecd97f3176eba7aceea3",
"startDate" : NumberLong("1343023785531"),
"user_id" : "soggettoDGcfe",
"app_source" : "Diary",
"measuredValue":"76.0",
}
因此,当我尝试运行一些查询来检查值是否大于某个值时,不会返回记录。通过查询,我可以一个接一个地更正一些记录
db.OBSERVABLEPARAMETER.update({_id:"500cecd97f3b198ba7aceea3"},{$set:{measuredValue:76}});
但是他们是数百人!
如何快速更新所有这些值?如果所有值都相同(即“76.0”),则只需执行以下操作:
db.OBSERVABLEPARAMETER.update({measuredValue:"76.0"},{$set:{measuredValue:76.0}}, {multi:true});
如果这些值都是不同的字符串,则必须使用以下内容查找不正确的字符串:
c = db.OBSERVABLEPARAMETER;
c.find({measuredValue:{$type: 2}}).forEach(function (r){
c.update({_id:r._id},{$set:{measuredValue:Number(r.measuredValue)}});
});
如果您有大量的测量值,但measuredValue的数量有限,那么使用获取所有单个值然后批量更新它们可能会更快 它工作得太多了:)是否可以只修改字段为app_source:“Diary”
db.observeparameter.update({measuredValue:“76.0”,“app_source:“Diary”},{$set:{measuredValue:76.0},{multi:true})的记录的measuredValue
或c.find({measuredValue:{$type:2},“app_source”:“Diary”})
对不起,我的意思是:函数forEach将measuredValue设置为number,但我只需要对字段app_source等于“Diary”的记录执行此操作,您需要c.find({“app_source”:“Diary”}){measuredValue:Number(r.measuredValue)}}};});
然后呢?MongoDb基本查询文档有文档记录是的,这是一个愚蠢的问题,但我很害怕,因为在前面的查询中我有副作用…现在一切都很好,非常感谢您的帮助