Есть ли встроенный JSON.parse в MongoDB? - PullRequest
5 голосов
/ 05 октября 2011

Есть ли какая-нибудь функция 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 ]

8 голосов
/ 22 января 2015

Оболочка Mongo версии 2.1+ включает в себя служебный объект JSON:

  • От объекта к JSON: JSON.serialize(object)
  • От JSON до объекта: JSON.parse(string)

http://api.mongodb.org/java/2.6/com/mongodb/util/JSON.html

Примечание: в оболочке Mongo версии 2.4+ используйте JSON.stringify() вместо JSON.serialize()
http://docs.mongodb.org/manual/release-notes/2.4-javascript/

5 голосов
/ 05 октября 2011

Вы можете попробовать функцию eval:

obj = eval("(function() { return {\"key\": \"value\"} })()")

Но учтите, что это небезопасно, поскольку он может выполнять произвольный код Javascript, включая db.dropDatabase().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...