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