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" 필드가 문자열 유형에서 숫자로 변경되었습니다.