私は少し愚かで、キー名にスペースを使用して 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シェルで関数を定義しようとしています:
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 );
}
指定されたコレクションに応じて、メトリックは 3 つのうちの 1 つになる可能性があります...問題は、「myMetric」以外の指定されたすべてのフィールドの名前が正しく変更されていることです。メトリック フィールドはスペースを含む元のフィールドのままです。
何か案は?
...アップデート。
「Avg Xfer /sec」メトリックのコレクションは「metric」に適切に名前が変更されているようですが、「Avg I/O /sec」または「Processor Busy %」のコレクションはそうではありません。それがなぜなのか、私にはよくわかりません。