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