Computer >> Máy Tính >  >> Lập trình >> MongoDB

Làm cách nào để thay đổi loại trường trong MongoDB?

Hãy để chúng tôi chuyển đổi kiểu chuỗi thành int để làm ví dụ. Tính tổng hợp không cho phép chúng tôi trực tiếp thay đổi loại trường; do đó, bạn cần viết mã để chuyển đổi loại trường.

Lúc đầu, hãy tạo một bộ sưu tập với tài liệu. Sau đó, chúng tôi sẽ nhận được loại của mọi trường. Truy vấn để tạo một bộ sưu tập với tài liệu như sau

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

Hiển thị tất cả các tài liệu từ một bộ sưu tập với sự trợ giúp của phương thức find (). Truy vấn như sau:

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

Sau đây là kết quả:

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

Bây giờ chúng ta hãy kiểm tra loại của mọi trường trong một bộ sưu tập. Truy vấn như sau để kiểm tra loại của mọi trường:

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

Bây giờ ở đây chúng ta sẽ sử dụng biến “checkType” ở trên để lấy kiểu của mọi biến. Truy vấn như sau:

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

Bây giờ, hãy thay đổi kiểu “StudentZipCode” từ kiểu chuỗi thành kiểu số. Truy vấn như sau:

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

Tôi đã thay đổi loại “StudentZipCode” từ loại chuỗi thành loại số. Để xác minh, chúng ta hãy làm theo những gì chúng ta đã thấy ở trên để kiểm tra loại trường trong một tập hợp:

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

Sử dụng biến trên để kiểm tra loại trường:

> typeof againCheckType.StudentZipCode;
number

Bây giờ hãy nhìn vào đầu ra ở trên, trường “StudentZipCode” đã được thay đổi từ kiểu chuỗi thành số.