MongoDB - FindOne将数据类型从NumberInt更改为decimal

时间:2018-04-19 14:46:20

标签: database mongodb mongodb-query

我必须处理我的收藏中的元素:

数据:

{ 
        "_id" : ObjectId("599ccef160b543xbf380c99x"), 
        "code" : "ME0001", 
        "description" : "Element 1", 
        "operationCode" : null, 
        "order" : NumberInt(1), 
        "level" : NumberInt(0), 
        "subItems" : [
        ]
    }

当我运行此查询以获取数据时:

var obj = db.itemMenu.findOne({"code": "ME0001"});

问题在于" order"的数据类型。和"等级"字段,如你所见改变:

{ 
    "_id" : ObjectId("599ccef160b543xbf380c99x"), 
    "code" : "ME0001", 
    "description" : "Element 1", 
    "operationCode" : null, 
    "order" : 1.0, 
    "level" : 0.0, 
    "subItems" : [
    ]
}

如何获取数据不变?

1 个答案:

答案 0 :(得分:0)

使用Schema只允许整数:https://docs.mongodb.com/manual/core/schema-validation/

要将所有浮动更新为整数:

db.itemMenu.find( {  } ).forEach( function (item) {   
  item.order = parseInt(item.order); // convert field to int
  item.level = parseInt(item.level); // convert field to int
  db.itemMenu.save(item);
});

希望它有所帮助。