programing

MongoDB에서 ObjectId와 해당 문자열 형식의 저장 차이

css3 2023. 6. 24. 09:28

MongoDB에서 ObjectId와 해당 문자열 형식의 저장 차이

Mongo DB에서 ObjectIds를 사용하는 것이 조금 혼란스럽습니다.물론 다른 클라이언트 측에서 생성된 ID와 거의 충돌하지 않는 클라이언트 측 ID를 생성하는 데 유용합니다.하지만 몽고는 특별한 방법으로 그것들을 보관하는 것 같습니다.ID의 문자열 표현을 저장하는 것은 개체 ID를 개체로 저장하는 것과 다릅니다.왜 이러한가?

문자열 형식은 객체 형식과 동일한 정보를 모두 가지고 있지 않습니까?왜 몽고는 그 두 가지 형태를 구별하기 위해 그렇게 멀리까지 갑니까?예를 들어 프런트 엔드에서 보낸 _ids를 비교하려고 하면 짜증이 납니다.제 데이터베이스는 문자열 형식 ID를 저장하든 객체 형식 ID를 저장하든 전혀 일치하지 않습니다. 그리고 제 코드는 확실히 부분적으로 책임이 있습니다. 저는 대부분 몽고가 이것을 너무 이상하게 만든 것을 비난합니다.

이게 이상하다는 게 제 말이 맞나요?mongo는 왜 이런 식으로 합니까?

나는 비교하기 위해 코드에서 문자열로 변환하고 나는 그것처럼 보이는 모든 것을 보장합니다.ObjectId는 실로사용다니로 됩니다.ObjectId.

그 사이에 주목하는 것이 좋습니다.ObjectId(http://docs.mongodb.org/manual/reference/object-id/) 그리고 그것은 16진수 표현입니다. 실제로 12바이트의 차이가 있습니다.ObjectId은 2412인치 16인치 24인치입니다.

도 더 입니다. 크기가 더 작기 때문만이 아니라 이전부터ObjectId인덱스의 일부만 로드되고 사용되는 부분만 로드되도록 특수한 방식으로 사용할 수 있습니다.이는 고유성을 보장하기 위해 해당 인덱스의 최신 부분만 로드하면 되는 삽입 시 가장 두드러집니다.16진수 표현으로는 이러한 동작을 보장할 수 없습니다.

저는 당신이 그것을 사용하지 않는 것을 강력히 추천합니다.ObjectId의 16진수 표현.만약 당신이 "당신의 삶을 더 쉽게 만들고" 싶다면, 당신은 다른 것을 만드는 것이 더 나을 것입니다._id그것은 작지만 왠지 독특하고 색인 친화적입니다.

ObjectId내부에 저장할 때는 12바이트로, 16진수 문자열 표현보다 더 작습니다.그 둘은 다른 것입니다.

한 DB를 할 수 ._id필드에서 이 문제를 해결하고 코드가 동일한 형식으로 저장되는지 확인합니다. ObjectIdMongoDB에서 생성하는 속도가 빠르기 때문에 새 문서를 만들 때 사용합니다.

언급URL : https://stackoverflow.com/questions/27896979/difference-between-storing-an-objectid-and-its-string-form-in-mongodb