我正在尝试将专有JSON数据库中的一些数据插入到MongoDB中以进行测试。我的数据目前位于json文件中,格式为:
{ "_id": "213124123114",
"foo":bar",
"otherId": "2324242424",
...
}
为了保持我的测试数据关系不变,我想用sed用ObjectId(...)包装所有_id和xxxId值
我的数据如下:
{ "_id": ObjectId("213124123114"),
"foo":bar",
"otherId": ObjectId("2324242424"),
...
}
然后我将获取数据并以与文件中显示的格式相同的格式将其插入mongo。
我正在使用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
但是我无法捕获我需要包装的值块。
任何想法我做错了什么?
答案 0 :(得分:1)
试试这个:
json.replace(/("(?:_id|otherId)": ?)("\d+")/g, '$1ObjectId($2)');
这是一个小提琴:http://jsfiddle.net/7WJBm/1/