Как да конвертирате String в Array в MongoDB?

Заседнал съм в ситуацията, когато типът на обект е променен.

Как мога да конвертирам това:

{ 
"_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 записа, надявам се, че може да се направи от скрипта.


person D. L.    schedule 07.04.2015    source източник


Отговори (2)


Можете да опитате това:

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);
});
person chridam    schedule 07.04.2015
comment
Благодаря! Работи за мен! Не мога да гласувам за коментара ви поради липса на моята репутация, но ще го направя, след като спечеля достатъчно от него. Благодаря отново! Бяхте много полезни! - person D. L.; 08.04.2015

можете да използвате foreach в актуализацията по този начин

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

person XtremeBytes    schedule 07.04.2015