Коллекция для примера:
db.longs.insert({ "_id" : NumberLong("724756511264022954") });
db.longs.insert({ "_id" : 12477933649175871000 });
Нужно все _id превратить в строки. Гугл направил на
стэковерфлоу, где предложили такой вариант:
db.longs.find().forEach( function (x) {
x._id = new String(x._id);
db.longs.save(x);
});
После чего
db.longs.find()
выводит такой вот треш:
{ "_id" : NumberLong("724756511264022954") }
{ "_id" : 12477933649175871000 }
{ "_id" : 12477933649115871000 }
{ "_id" : { "0" : "N", "1" : "u", "2" : "m", "3" : "b", "4" : "e", "5" : "r", "6" : "L", "7" : "o", "8" : "n", "9" : "g", "10" : "(", "11" : "\"", "12" : "7", "13" : "2", "14" : "4", "15" : "7", "16" : "5", "17" : "6", "18" : "5", "19" : "1", "20" : "1", "21" : "2", "22" : "6", "23" : "4", "24" : "0", "25" : "2", "26" : "2", "27" : "9", "28" : "5", "29" : "4", "30" : "\"", "31" : ")" } }
{ "_id" : { "0" : "1", "1" : "2", "2" : "4", "3" : "7", "4" : "7", "5" : "9", "6" : "3", "7" : "3", "8" : "6", "9" : "4", "10" : "9", "11" : "1", "12" : "7", "13" : "5", "14" : "8", "15" : "7", "16" : "1", "17" : "0", "18" : "0", "19" : "0" } }
{ "_id" : { "0" : "1", "1" : "2", "2" : "4", "3" : "7", "4" : "7", "5" : "9", "6" : "3", "7" : "3", "8" : "6", "9" : "4", "10" : "9", "11" : "1", "12" : "1", "13" : "5", "14" : "8", "15" : "7", "16" : "1", "17" : "0", "18" : "0", "19" : "0" } }
Пробовал еще:
db.longs.find().forEach( function (x) {
a = x._id.valueOf().toString();
x._id = new String(a.valueOf());
db.longs.save(x);
});
Но, получился практически тот же результат (разве что, исчезли буквы и спецсимволы из _id)