我有一个混合类型的mongodb记录,需要清理数据以便在后端应用程序中有所帮助。
要更改普通字段的类型(NumberLong到String)很简单,只需将其转换为Javascript中的字符串,如:
db.foo.find( { 'field' : { $type : 18 } } ).forEach( function (x) {
x.field = new String(x.field); // convert field to string
db.foo.save(x);
});
但是如何将数组元素从NumberLong更改为String?
例如我有字段:
"elements" : { "top" : {"random" : [ NumberLong(12) , NumberLong(20), NumberLong(13)] } }
我需要elements.top.random
的所有元素作为字符串。
我是否需要做数组的“foreach”元素或者有更好的方法吗?
任何Javascript专家都可以帮助我吗?
答案 0 :(得分:0)
在发帖之前我找不到答案,现在我找到了类似的东西并采纳了......
所以这就是:
db.foo.find( {"elements.top.random": {$type:18}} ).forEach( function (x) {
var arr = [];
x.elements.top.random.forEach( function (e) { arr.push("" + e); } );
x.elements.top.random = arr;
db.foo.save(x);
});