【问题标题】:How to convert String to Array in MongoDB?如何在 MongoDB 中将字符串转换为数组?
【发布时间】:2015-06-12 14:21:05
【问题描述】:

当对象的类型发生变化时,我陷入了困境。

如何转换:

{ 
"_id" : NumberLong(257),
"address" : "street  Street, house 50, appartment 508, floor 5"
}

到这里:

{ 
"_id" : NumberLong(257),
 "userAddressList" : [{
        "street" : "Street",
        "house" : "50",
        "building" : "",
        "appartment " : NumberLong(508),
        "entrance" : NumberLong(0),
        "floor" : NumberLong(5),
        "intercom" : ""
    }]
}

使用 mongo shell?

我需要转换大约350个条目,希望可以通过脚本完成。

【问题讨论】:

    标签: javascript arrays mongodb converter


    【解决方案1】:

    你可以试试这个:

    db.collection.find().forEach( function (x) {   
        lines = x.address.split(",");
        obj = {};
        userAddressList = [];
        lines.forEach( function (address){
            addressArray = address.replace(/^\s\s*/, '').replace(/\s\s*$/, '').split(" ");
            obj[addressArray[0]] = !isNaN(parseInt(addressArray[1])) ? parseInt(addressArray[1]) : addressArray[1];        
        });
        obj.building = "";
        obj.intercom = "";
        userAddressList.push(obj);
        x.userAddressList = userAddressList; // convert field to string
        db.collection.save(x);
    });
    

    【讨论】:

    • 谢谢!为我工作!由于缺乏我的声誉,无法支持您的评论,但在我获得足够多的评论后会这样做。再次感谢!你很有帮助!
    【解决方案2】:

    你可以像这样在更新中使用 foreach

    db.test.find( { } ).forEach( function (x) {
    x.userAddressList = x.address.split(" "); db.test.save(x); });

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-30
      • 2015-06-11
      • 2015-11-11
      • 1970-01-01
      • 1970-01-01
      • 2021-12-13
      • 2022-01-14
      • 1970-01-01
      相关资源
      最近更新 更多