Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从MongoDB字段中删除引号_Mongodb_Numbers_Quotes - Fatal编程技术网

从MongoDB字段中删除引号

从MongoDB字段中删除引号,mongodb,numbers,quotes,Mongodb,Numbers,Quotes,我有一个MongoDB收藏,里面有很多这样的唱片 { "_id" : "500cecd97f3b198ba7aceea3", "startDate" : NumberLong("1343023785531"), "user_id" : "soggettoDGcfe", "app_source" : "Diary", "measuredValue":120, } 问题在于,由于应用程序的错误,有数百条记录的字段“measuredV

我有一个MongoDB收藏,里面有很多这样的唱片

{ 
"_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基本查询文档有文档记录是的,这是一个愚蠢的问题,但我很害怕,因为在前面的查询中我有副作用…现在一切都很好,非常感谢您的帮助