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

mongodbdatabasebig data analytics

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

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

>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"字段已从字符串类型更改为数字类型。


相关文章