如何在MongoDB中更改字段的类型?


让我们以将字符串类型转换为整数为例。聚合不允许我们直接更改字段的类型;因此,您需要编写代码来转换字段的类型。

首先,创建一个包含文档的集合。之后我们将获取每个字段的类型。创建包含文档的集合的查询如下所示

>db.changeDataType.insertOne({"StudentName":"Larry","StudentAge":23,"StudentZipCode":"
10001","isProgrammer":false});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c6ed4976fd07954a4890694")
}

使用find()方法显示集合中的所有文档。查询如下所示

> db.changeDataType.find().pretty();

以下是输出

{
   "_id" : ObjectId("5c6ed4976fd07954a4890694"),
   "StudentName" : "Larry",
   "StudentAge" : 23,
   "StudentZipCode" : "10001",
   "isProgrammer" : false
}

现在让我们检查集合中每个字段的类型。检查每个字段类型的查询如下所示

> checkType=db.changeDataType.findOne();
{
   "_id" : ObjectId("5c6ed4976fd07954a4890694"),
   "StudentName" : "Larry",
   "StudentAge" : 23,
   "StudentZipCode" : "10001",
   "isProgrammer" : false
}

现在我们将使用上面的变量“checkType”来获取每个变量的类型。查询如下所示

> typeof checkType._id;
object
> typeof checkType.StudentName;
string
> typeof checkType.StudentAge;
number
> typeof checkType.StudentZipCode;
string
> typeof checkType.isProgrammer;
boolean

现在,将“StudentZipCode”的类型从字符串更改为数字类型。查询如下所示

> db.changeDataType.find().forEach(function(ch)
... {
... db.changeDataType.update({
... "_id":ch._id},
... {"$set":
... {
... "StudentZipCode":parseInt(ch.StudentZipCode)
... }
... });
... });

我已经将“StudentZipCode”的类型从字符串更改为数字类型。为了验证,让我们按照上面所看到的步骤来检查集合中字段的类型

> againCheckType=db.changeDataType.findOne();
{
   "_id" : ObjectId("5c6ed4976fd07954a4890694"),
   "StudentName" : "Larry",
   "StudentAge" : 23,
   "StudentZipCode" : 10001,
   "isProgrammer" : false
}

使用上面的变量来检查字段的类型

> typeof againCheckType.StudentZipCode;
number

现在查看上面的输出,“StudentZipCode”字段已经从字符串类型更改为数字类型。

更新于:2019年7月30日

2K+ 次浏览

启动您的职业生涯

通过完成课程获得认证

开始学习
广告
© . All rights reserved.