2011-12-20 3 views

답변

1

bson 라이브러리는 you/mongomapper에 대해 이것을 처리합니다. serialize하려는 것이 bignum/fixnum 인 경우 4 바이트 또는 8 바이트 정수에 맞는지 여부를 확인하고 그에 따라 인코딩합니다. Fixnum 한계가 mongo에있는 4 바이트/바이트 경계와 일치하지 않으므로 실제로 값을 확인합니다.

드라이버의 해당 비트는 here

+0

코드가 서명 된 64 비트 정수의 범위에 맞지 않는 정수를 거부의 비트 그렇지? 자동 변환 코드가 보이지 않습니다. –

+0

올바른 - bson은 이러한 정수를 나타낼 수 없습니다. 그 코드가하는 일은 32 비트 정수에 맞는 것들이 bson의 4 바이트 타입을 사용하여 저장되고 8 바이트에 맞는 것들이 bson의 8 바이트 타입으로 저장된다는 것입니다. 너가 그 범위에서 벗어나면 너는 운이 없어. –

+0

오, 오케이, 내 부분에 대한 오너의 오해;) –

0

정수 데이터 유형은 선택한 Mongo 설치에 따라 다릅니다. 32 비트를 선택하면 정수는 최대 32 비트가되므로 약 20 억 개가됩니다. 64 비트 설치를 선택하는 것이 좋습니다.

0

MongoDB는 데이터를 BSON 형식 (바이너리 JSON 인 )으로 저장합니다. The specification for BSON은 32 비트 및 64 비트 정수를 모두 지원합니다.

여기에 열쇠가 루비 드라이버와 구성이 될 것입니다.