2017-03-08 4 views

Antwort

0

sah ich einige Link und eine richtige Lösung für Sie Problem

Zuerst müssen Sie Ihre ganze Spalte zu erhalten, können Sie dies mit MapReduce tun könnte:

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" 
}); 

Dann deutliche laufen auf der resultierende Sammlung um alle Schlüssel zu finden:

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

und benennen Sie die alle passenden Spalten

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) 
    } 
}) 

Referenz Link ist

MongoDB Get names of all keys in collection

MongoDB $rename javascript variable for key name

+0

Eigentlich habe ich nicht die Feldnamen wissen, alles, was ich weiß, ist, gibt es Felder, die mit $ beginnen. Gibt es einen ähnlichen Operator, den wir benutzen können? – ashwin

+0

Ich habe die Antwort entsprechend Ihrer Anfrage aktualisiert – Gaurav

+0

Danke @gaurav, ich habe ein anderes Problem, einige Feldnamen sind in Array. – ashwin

Verwandte Themen