Некоторый «ObjectId» не заменяется - PullRequest
0 голосов
/ 02 января 2019

Я конвертирую документ mongodb _id
from : "_id" : ObjectId("5c09b6002351d50e100c5f6c"),
To: "_id" : "5c09b6002351d50e100c5f6c",

Я использую регулярное выражение text.replace(/ObjectId\((.*)\)/gi,"$1");

Проблема в том, что некоторые ObjectId конвертируются, но некоторые не конвертируются, не знаю почему ..

small example code of what i am doing:

var fs=require('fs');
var data = fs.readFileSync('./abc.json');      
str = data.toString()
str = str.replace(/ObjectId\((.*)\)/g,"$1");
fs.writeFile('str','data.json');

note: Я экспортировал входной файл, используя Studio 3T

Заранее спасибо!

1 Ответ

0 голосов
/ 02 января 2019

Проблема в том, что .* также соответствует некоторым целым выражениям "ObjectId (...)".

Решение заключается в использовании не жадной группы:

text.replace(/ObjectId\((.*?)\)/gi,"$1");

Лучше (более производительным) сделать это явным, если вы можете:

text.replace(/ObjectId\(("[^"]*")\)/gi,"$1");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...