Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.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 如何更改Mongo文档中嵌套字段的数据类型?_Mongodb_Mongodb Query - Fatal编程技术网

Mongodb 如何更改Mongo文档中嵌套字段的数据类型?

Mongodb 如何更改Mongo文档中嵌套字段的数据类型?,mongodb,mongodb-query,Mongodb,Mongodb Query,我的Mongo结构如下所示 "topProcesses" : [ { "cpuUtilizationPercent" : "0.0", "processId" : "1", "memoryUtilizationPercent" : "0.1", "command" : "init", "user" : "root" }, {

我的Mongo结构如下所示

"topProcesses" : [
        {
            "cpuUtilizationPercent" : "0.0",
            "processId" : "1",
            "memoryUtilizationPercent" : "0.1",
            "command" : "init",
            "user" : "root"
        },
        {
            "cpuUtilizationPercent" : "0.0",
            "processId" : "2",
            "memoryUtilizationPercent" : "0.0",
            "command" : "kthreadd",
            "user" : "root"
        },
        {
            "cpuUtilizationPercent" : "0.0",
            "processId" : "3",
            "memoryUtilizationPercent" : "0.0",
            "command" : "ksoftirqd/0",
            "user" : "root"
        },
        {
            "cpuUtilizationPercent" : "0.0",
            "processId" : "5",
            "memoryUtilizationPercent" : "0.0",
            "command" : "kworker/0:+",
            "user" : "root"
        },
        {
            "cpuUtilizationPercent" : "0.0",
            "processId" : "6",
            "memoryUtilizationPercent" : "0.0",
            "command" : "kworker/u3+",
            "user" : "root"
        },
        {
            "cpuUtilizationPercent" : "0.0",
            "processId" : "8",
            "memoryUtilizationPercent" : "0.0",
            "command" : "rcu_sched",
            "user" : "root"
        } 
    ]
现在在上面的文档中,
topProcesses.cpuUtilizationPercent
是字符串,我想将
topProcesses.cpuUtilizationPercent
数据类型更改为
Float
。为此,我在下面尝试了一下,但没有成功

db.collectionName.find({
   "topProcesses":{"$exists":true}}).forEach(function(data){
    for(var ii=0;ii<data.topProcesses.length;ii++){
   db.collectionName.update({_id: data._id},{$set:{"topProcesses.$.cpuUtilizationPercent":parseFloat(data.topProcesses[ii].cpuUtilizationPercent)}},false,true);
  }
})
db.collectionName.find({
“topProcesses”:{“$exists”:true}).forEach(函数(数据){

对于(var ii=0;ii您这样做是正确的,但是在
.update()
的查询部分中没有包含要匹配的数组元素:

db.collectionName.find({
“topProcesses”:{“$exists”:true}).forEach(函数(数据){

对于(var ii=0;ii,您可以使用下面的查询将topProcesses.cpuUtilizationPercent的数据类型从字符串更新为浮点

db.db.find({"topProcesses.cpuUtilizationPercent" : {$exists : true}}).
forEach( function(obj)
{ obj.topProcesses.cpuUtilizationPercent = new ISODate(obj.topProcesses.cpuUtilizationPercent);
db.db.save(obj); } );