Javascript MongoDB,将字符串转换为列表
我们有一个MongoDB来存储订单信息,现在,“item_list”是一个字符串Javascript MongoDB,将字符串转换为列表,javascript,regex,mongodb,mongodb-query,Javascript,Regex,Mongodb,Mongodb Query,我们有一个MongoDB来存储订单信息,现在,“item_list”是一个字符串 "item_list" : "[{\"item_id\":14243,\"price\":7500,\"quantity\":1},{\"item_id\":1424,\"price\":2500,\"quantity\":1}]" 哪一个是字符串,如何将其转换为列表对象 我希望它的结局是: "item_list" : [{item_id:14243,price:7500,quantity:1},{item_i
"item_list" : "[{\"item_id\":14243,\"price\":7500,\"quantity\":1},{\"item_id\":1424,\"price\":2500,\"quantity\":1}]"
哪一个是字符串,如何将其转换为列表对象
我希望它的结局是:
"item_list" : [{item_id:14243,price:7500,quantity:1},{item_id:1424,price:2500,quantity:1]
将您的数据视为:
"item_list" : "[{\"item_id\":14243,\"price\":7500,\"quantity\":1},{\"item_id\":1424,\"price\":2500,\"quantity\":1}]"
您可以使用以下脚本更新所有文档:
db.collection.find().forEach(function(obj) {
//var a = eval(obj.item_list); you can use eval also
var a = JSON.parse(doc.item_list);
db.collection.update({
"_id": obj._id
}, {
$set: {
"item_list": a
}
});
});
看起来真是一团糟。这应该会使事情变得正确 您需要替换无效的JSON,然后
.parse()
它:
var bulk=db.collection.initializeOrderedBulkOp(),
计数=0;
find({“item_list”:{“$type”:2}}).forEach(函数(doc){
doc.item\u list=doc.item\u list.replace(新的RegExp(“(\”数量\“:\\d+”,“\\g”),“$1}”);
doc.item_list=doc.item_list.replace(新的RegExp(“,]$”,“]);
doc.item_list=JSON.parse(doc.item_list);
printjson(文件项清单);
bulk.find({“\u id”:doc.\u id}).update({
“$set”:{“项目列表”:doc.item\u列表}
});
计数++;
如果(计数%1000==0){
bulk.execute();
bulk=db.collection.initializeOrderedBulkOp();
}
});
如果(计数%1000!=0){
bulk.execute();
}
因为其他人都没有意识到JSON是无效的,所以发帖。你是如何得到这个的?:-)你想在shell中这样做吗?您是否使用了任何驱动程序?@user3100115,编辑了该问题,没有特殊的驱动程序,只有base mongo命令行是集合中所有文档的
item_list
string?JSON字符串无效。我重新编辑了这个问题,json应该是有效的,只是一个类型错误