MongoDB конвертирует из int32, чтобы удвоить себя

У меня странная проблема, когда я запускаю оболочку для mongoDB. Моя структура коллекции похожа на приведенную ниже в mongoDB. Тип элементов ServiceList должен быть целочисленным.

{ 
    "_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
            ]

        }
    ]

}

Моя цель запустить этот код - преобразование типа использования из int32 в int64. Это работает нормально. Когда я запускаю код ниже. что-то странное происходит, и тип предметов внутри AppList.ServiceList преобразуется в double от int32 сам.

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

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

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

и, кажется, вот так,

{ 
    "_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
            ]

        }
    ]
}

Как я могу решить эту проблему?

Версия MongoDB:3.4.9 Версия MongoShell:v3.4.9

0 ответов

Другие вопросы по тегам