是否有任何Mongo(命令行)函数可以将字符串转换为对象?例如JSON.parse还是那样的?
db.sessions.update({},{'$ set':{'extra':JSON.parse(stringData)}});
我的解决方案:
function my_extra() {
db.tempData.find().forEach( function(obj) {
obj.extra = db.eval(obj.myString);
db.tempData.save(obj);
} );
};
my_extra();
但是,我试试这个:db.tempData.update({},{'$ set':{'extra':db.eval(myString)}}); 但它不起作用..说没有定义myString。 所以我使用this.myString但不起作用。这就是为什么我必须使用这个功能。
有没有办法在第二个参数中引用myString?
答案 0 :(得分:8)
版本2.1+ Mongo shell包含一个JSON
实用程序对象:
JSON.serialize(object)
JSON.parse(string)
http://api.mongodb.org/java/2.6/com/mongodb/util/JSON.html
注意:在版本2.4+ Mongo shell中,使用JSON.stringify()
代替JSON.serialize()
http://docs.mongodb.org/manual/release-notes/2.4-javascript/
答案 1 :(得分:5)
您可以尝试eval
功能:
obj = eval("(function() { return {\"key\": \"value\"} })()")
但请注意,它不安全,因为它可以执行任意Javascript代码,包括db.dropDatabase()
。