一些“ ObjectId”没有被替换

时间:2019-01-02 17:36:25

标签: javascript node.js regex mongodb

我正在转换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 :(得分:0)

问题在于您的.*也与整个“ ObjectId(...)”表达式匹配。

一种解决方案是使用非贪婪的组:

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

一种更好(性能更高)的方法是:如果可以的话,将其明确:

text.replace(/ObjectId\(("[^"]*")\)/gi,"$1");