gpt4 book ai didi

javascript - 尝试用空格重命名 MongoDB 文档字段

转载 作者:可可西里 更新时间:2023-11-01 10:05:40 26 4
gpt4 key购买 nike

我有点笨,在 MongoDB 中创建了一个集合,键名中有空格:

{
"_id" : ObjectId("5065f84d00ea10c01e00003f"),
"DateTime" : ISODate("2012-09-27T15:19:00Z"),
"Port Name" : "CL3-J",
"Port Number" : "40",
"Avg I/O /sec" : "2024.0",
"array_serial" : "xxxxx"
}

我正在尝试在 mongo shell 上定义一个函数来重命名它们:

var metricNames = ["Processor Busy %",
"Avg I/O /sec",
"Avg Xfer /sec"];


var renameFields = function(collection) {
var record = db[collection].findOne({});
var myMetric;

for (var key in record) {
if(metricNames.indexOf(key) !== -1){
myMetric = metricNames[metricNames.indexOf(key)];
print(myMetric);
break;
} else {
continue;
}
}

db[collection].update( { }, { $rename : {
'DateTime' : 'datetime',
'Port Name' : 'port_name',
'Port Number' : 'port_number',
'Adaptor ID' : 'adaptor_id',
'Processor ID' : 'processor_id',
'Processor Type' : 'processor_type',
myMetric : 'metric' } }, false, true );

}

根据指定的集合,度量可能是三个之一...问题是除了“myMetric”之外的所有指定字段都被正确重命名,度量字段保留为带空格的原始字段.

有什么想法吗?


...更新。

似乎具有“Avg Xfer/sec”指标的集合已正确重命名为“metric”,但具有“Avg I/O/sec”或“Processor Busy %”的集合却没有。我不完全确定为什么会这样。

最佳答案

这是因为重命名更新正在寻找一个名为 'myMetric' 的属性来重命名,而不是一个名为 myMetric 的值。您需要以编程方式构建重命名对象:

var rename = { 
'DateTime' : 'datetime',
'Port Name' : 'port_name',
'Port Number' : 'port_number',
'Adaptor ID' : 'adaptor_id',
'Processor ID' : 'processor_id',
'Processor Type' : 'processor_type'
};
rename[myMetric] = 'metric';
db[collection].update( { }, { $rename : rename }, false, true );

关于javascript - 尝试用空格重命名 MongoDB 文档字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12679950/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com