
이러한 문제는 MongoDBBSONInt64::jsonSerialize의 내부 로직에 의해 발생합니다. jsonSerialize는 64비트 정수 값을 JSON으로 serialize할 때, 정수 값의 범위가 JSON의 숫자 타입의 범위보다 크기 때문에 발생하는 문제입니다.
이 문제를 해결하는 방법은 두 가지가 있습니다.
1. BigInt: JSON을 serialize할 때, BigInt을 사용하여 64비트 정수 값을 표현할 수 있습니다. BigInt은 JSON의 숫자 타입의 범위를 초과하는 큰 정수 값을 표현할 수 있습니다.
#hostingforum.kr
cpp
BSONInt64 value(9223372036854775807);
auto serialized = value.jsonSerialize();
위의 코드는 BigInt을 사용하여 serialize한 결과는 다음과 같습니다.
#hostingforum.kr
json
9223372036854775807
2. 수정된 jsonSerialize: MongoDBBSONInt64::jsonSerialize를 수정하여 64비트 정수 값을 정확하게 serialize할 수 있습니다. 그러나 이 방법은 MongoDBBSONInt64::jsonSerialize를 직접 수정해야 하기 때문에, MongoDB의 버전을 변경하거나, MongoDBBSONInt64::jsonSerialize를 직접 수정해야 합니다.
#hostingforum.kr
cpp
BSONInt64 value(9223372036854775807);
auto serialized = value.jsonSerialize();
위의 코드는 수정된 jsonSerialize를 사용하여 serialize한 결과는 다음과 같습니다.
#hostingforum.kr
json
9223372036854775807
이러한 문제를 해결하기 위해서는, MongoDBBSONInt64::jsonSerialize를 직접 수정하거나, BigInt을 사용하여 64비트 정수 값을 표현할 수 있습니다.
2025-08-08 20:10