Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MongoDB

จะเปลี่ยนประเภทของฟิลด์ใน MongoDB ได้อย่างไร?


ให้เราแปลงประเภทสตริงเป็น int เป็นตัวอย่าง การรวมไม่อนุญาตให้เราเปลี่ยนประเภทของฟิลด์โดยตรง ดังนั้น คุณต้องเขียนโค้ดเพื่อแปลงประเภทของฟิลด์

ขั้นแรก ให้สร้างคอลเลกชันที่มีเอกสาร หลังจากนั้นเราจะได้แบบของทุกสนาม แบบสอบถามเพื่อสร้างคอลเลกชันที่มีเอกสารมีดังนี้

>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” ได้เปลี่ยนจากประเภทสตริงเป็นตัวเลข