NumberLong()으로 8바이트 정수 삽입하기
JavaScript 셸(mongo shell)에서 MongoDB에 8바이트(64비트) 정수를 삽입하려면 NumberLong() 생성자를 사용해야 합니다. JavaScript의 일반 숫자 타입은 안전하게 표현할 수 있는 정수 범위가 제한적이기 때문에, 그보다 큰 값을 다룰 때는 반드시 NumberLong을 사용하는 것이 좋습니다.
기본 문법은 다음과 같습니다.
anyVariableName = {"yourFieldName" : new NumberLong("yourValue")};삽입 예제
다음은 userId라는 필드에 8바이트 정수를 삽입하는 실제 쿼리입니다.
> userDetail = {"userId" : new NumberLong("98686869")};
{ "userId" : NumberLong(98686869) }쿼리를 실행하면 값이 NumberLong 타입으로 정상적으로 저장된 것을 확인할 수 있습니다.
저장된 값 확인하기
삽입된 변수의 값을 확인하는 방법은 두 가지가 있습니다.
1. 변수 이름으로 직접 출력
변수 이름만 입력하면 저장된 값이 그대로 출력됩니다.
> userDetail
실행 결과는 다음과 같습니다.
{ "userId" : NumberLong(98686869) }2. printjson() 함수 사용
printjson() 함수를 사용하면 객체를 보기 좋은 형태로 출력할 수 있습니다.
> printjson(userDetail);
실행 결과는 다음과 같습니다.
{ "userId" : NumberLong(98686869) }정리
MongoDB에서 64비트 범위의 큰 정수를 다룰 때는 new NumberLong("값") 형태로 문자열을 전달하여 생성하는 것이 안전합니다. 특히 JavaScript의 Number.MAX_SAFE_INTEGER(약 9×10¹⁵)를 초과하는 값을 다룰 때는 반드시 이 방식을 사용해야 데이터 손실 없이 정확하게 저장할 수 있습니다.