MongoDB中的任何内置JSON.parse?

时间:2011-10-05 19:06:34

标签: json parsing mongodb

是否有任何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?

2 个答案:

答案 0 :(得分:8)

版本2.1+ Mongo shell包含一个JSON实用程序对象:

  • 从对象到JSON:JSON.serialize(object)
  • 从JSON到对象: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()