如何在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.