Regex, чтобы обернуть значение свойства JSON в другую строку.MongoDB переход - PullRequest
0 голосов
/ 30 января 2012

Я пытаюсь вставить некоторые данные из собственной базы данных JSON в MongoDB для тестирования. Мои данные в настоящее время находятся в файле JSON в формате:

{ "_id": "213124123114",
  "foo":bar",
  "otherId": "2324242424",
  ...
}

Чтобы сохранить мои отношения тестовых данных нетронутыми, я хочу использовать sed для переноса всех значений _id и xxxId с помощью ObjectId (...)

Мои данные будут выглядеть так:

{ "_id": ObjectId("213124123114"),
  "foo":bar",
  "otherId": ObjectId("2324242424"),
  ...
}

Затем я бы взял данные и вставил их в монго в том же формате, что и в файле.

Я проверяю свое регулярное выражение в javascript, но следующее задание взрывается:

var y = s/"_id":(\s?"[0-9]+"),/ObjectId($1)/gi

SyntaxError: Неожиданный токен:

Выход из ':', похоже, ничего не делает.

Когда я убираю флаг захвата в начале, присваивание регулярному выражению работает как ожидалось

var y = /"_id":(\s?"[0-9]+"),/
var p = "\"_id\": \"123123123121321212312\",";
y.test(p) === true

но у меня нет способа захватить блок значений, который мне нужно обернуть.

Есть идеи, что я делаю не так?

1 Ответ

1 голос
/ 30 января 2012

Попробуйте:

json.replace(/("(?:_id|otherId)": ?)("\d+")/g, '$1ObjectId($2)');

Вот скрипка: http://jsfiddle.net/7WJBm/1/

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