1

I am getting a weird problem when I run in shell for mongoDB. My collection structure is like below in mongoDB.The type of ServiceList items must be integer.

{ 
    "_id" : ObjectId("56565"), 
    "Contact" : "", 
    "Email" : "", 
    "AppList" : [

        {
            "Code" : "", 
            "Usage" : NumberInt(542),    
            "LicenceType" : "Monthly", 
            "CreatedDate" : ISODate("2015-07-29T06:15:20.520+0300"), 
            "ServiceList" : [
                1,5,8
            ]

        }
    ]

}

My aim to run this code is converting Usage type from int32 to int64.It works fine.When I run the code below. something weird occours, and the type of the items inside AppList.ServiceList is converted to double from int32 itself.

db.CustomerInfo.find({}).forEach( function (item) {
 if(item.AppList != undefined){

   item.AppList.forEach(function (x){
      x.Usage = NumberLong(x.Usage);

    });
           db.CustomerInfo.save(item);
 }
});

and it seems like this,

{ 
    "_id" : ObjectId("56565"), 
    "Contact" : "", 
    "Email" : "", 
    "AppList" : [

        {
            "Code" : "", 
            "Usage" : NumberLong(542),    
            "LicenceType" : "Monthly", 
            "CreatedDate" : ISODate("2015-07-29T06:15:20.520+0300"), 
            "ServiceList" : [
                1.0,5.0,8.0
            ]

        }
    ]
}

How can I solve this problem ?

MongoDB version:3.4.9 MongoShell version:v3.4.9

ethane
  • 2,329
  • 3
  • 22
  • 33
seyid yagmur
  • 1,572
  • 17
  • 26

0 Answers0