2017-03-08 388 views

回答

0

我看到一些链接,并作出适当的为您解决问题

首先,你需要得到你的所有列,你可以这样做与MapReduce的:

mr = db.runCommand({ 
    "mapreduce" : "my_collection", 
    "map" : function() { 
    for (var key in this) { emit(key, null); } 
    }, 
    "reduce" : function(key, stuff) { return null; }, 
    "out": "my_collection" + "_keys" 
}); 

然后运行的结果集合不同这样才能找到所有的按键:

columns = db[mr.result].distinct("_id") 

,并重新命名所有匹配列

columns.forEach(function(columnName) { 
    if (columnName.indexOf('$') == 0) { 
     var newColumnName = columnName.replace('$', '&'); 
     rename_query = { '$rename': {} }; 
     rename_query['$rename'][columnName] = newColumnName; 
     db.my_collection.updateMany({}, rename_query) 
    } 
}) 

参考链接是

MongoDB Get names of all keys in collection

MongoDB $rename javascript variable for key name

+0

其实,我不知道该字段名称,我所知道的是,有与$开始字段。有什么我们可以使用的运营商吗? – ashwin

+0

我已根据您的要求更新了答案 – Gaurav

+0

感谢@gaurav,我有另外几个字段名称在数组中的问题。 – ashwin