mongdb에 매우 큰 정수 (정확히 수천 자릿수)를 저장하고 싶습니다. 물론 BSON에서 지원하는 표준 유형에서는 작동하지 않습니다. 범위 검색 및 유사한 작업을 수행하려는 경우 가장 효율적인 해결 방법을 생각하려고합니다. 이 요구 사항은 범위 검색을 비실용적으로 만들기 때문에 정수를 문자열로 저장하는 것을 제외합니다.bson 어레이는 어떻게 비교합니까 (mongodb/pymongo에서)?
내가 생각할 수있는 한 가지 방법은 표준 정수의 (가변 길이) 배열을 사용하여 2^32 확장을 인코딩하고이 배열에 배열 자체의 길이에 대한 첫 번째 항목을 추가하는 것입니다. 그런 식으로 배열에 대한 사전 식 순서는 임의로 큰 정수의 일반적인 순서와 일치합니다.
예를 들어, 컬렉션 내가
{"name": "me", "fortune": [1,1000]}
{"name": "scrooge mcduck", "fortune": [11,1,0,0,0,0,0,0,0,0,0,0]}
{"name": "bruce wayne","fortune": [2, 10,0]}
{"name": "bill gates", "fortune": [2,1,1000]}
{"name": "francis", "fortune": [0]}
는 따라서 브루스 웨인의 순 가치가 10 5 문서를 가질 수 *^(32)이, 2^32 + 1000 빌 게이츠 '와 스크루지 맥덕의 2^(320).
그때 사용하여 정렬 할 수 있습니다 { "재산을": 1} 내 컴퓨터에 (pymongo로) 그들을 예상대로, 순서 프랜시스 < 나 < 법안 < 브루스 < 스크루지에 반환합니다.
그러나, 나는 내가 BSON 배열을 비교하는 방식에 대해 어디 문서화 보지 가정을 만드는 중이라서 및 범위 검색, 내가 예를 들어 (생각하는 방법을 작동하지 않는
find({"fortune":{$gte:[2,5,0]}})
아무 문서도 반환하지 않지만 나는 브루스와 스크루지를 원할 것입니다.)
아무도 도와 줄 수 있습니까? 감사합니다
Dhruv와 Remon이 설명한 아래의 두 솔루션 모두 최대 길이를 알고 있어야하며 많은 패딩 0을 저장해야합니다. – user1199915