Javascript MongoDB,将字符串转换为列表

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

我们有一个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_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应该是有效的,只是一个类型错误