2013-03-05 2 views
1

그래서 자동 증가 기본 ID로 MySQL을 제출하는 데 익숙 합니다만, MongoDB ORM 래퍼, Mongoose를 사용한 후 Mongo가 데이터를 저장 한 이후로 찾습니다. 수집 방식이 다르게, 기존의 자동 증가 ID 개념은 실제로 존재하지 않습니다.MongoDB/Mongoose ID로 제출물을 찾으십시오.

submission/34/category/slug-goes-here을 :

나는 일반적으로 내가 그렇게처럼 내 URL을 구성 것 때문에 지금 제출을 잡아하는 방법을 알아 내려고 붙어있어.

이제는 34이 Mongo와 함께 UUID를 기반으로 한 추악한 문자열이 되었기 때문에 URL에 표시하고 싶지는 않지만 내 제출물을 조회하기 위해 고유 한 URL을 원합니다.

아마도 데이터베이스에 제출을 삽입하면 6 자릿수 해시를 생성하는 설정 방법이있을 것이라고 생각하고 있습니다. zhXk40 그리고 그렇게 보입니다.

나는 성능상의 균형이 어떻게 될지 궁금해. 슬러그에 제약 조건을 적용한 다음 슬러그를 사용하여 카테고리를 찾은 경우 카테고리가 일치하는 것이 더 효율적입니까? 어느 쪽이든 나는 카테고리와 슬러그가 일치하는지 확인해야 할 것이지만,이 경우에는 ID가 정말로 필요한지 확실하지 않습니다.

경로를 작성하고 해당 경로를 기반으로 한 데이터베이스에서 일부 데이터를 찾는 가장 좋은 방법은 무엇입니까?

+0

나는 단지 포함 된 문서에 새 인덱스 독특한 필드를 추가 것 이를 사용하여 문서를 찾습니다. – WiredPrairie

답변

0

우선은 다음과 같습니다 _id 속성은 필요하지 않습니다 "추악한"ObjectId 문자열입니다. 당신이 당신의 데이터베이스 내에서 샤딩을 사용하려는 경우

사실, _id

... 당신이 ID를 증가 자동을 사용하려는 경우, 아무런 문제가 있지만, 없다, 그래서 그것의 콜렉션 내에서 고유해야 , 다음 자동 증가 필드를 사용하여 _id 과도합니다.

왜? 우리가 그것을 샤딩하지 않을거야으로, 우리는 단지 최종 사용자에게 쉽게 유용성에 대한 인덱스, 숫자 ID를 사용하고, 내부적으로 모든 참조 ObjectId의가, 내 응용 프로그램에서 Should I implement auto-incrementing in MongoDB?

: 여기 허용 대답 읽기 .

또한

, 여기 MongoDB를에 자동 증분 필드를 만들기위한 좋은 TUTO입니다 ". 외부 ID가"http://docs.mongodb.org/manual/tutorial/create-an-auto-incrementing-field/

+1

좋은 답변입니다. 내가이 옵션을 가지고 있음을 알았지 만, 그것에 대해 생각하는 것이 내가 관심을 가지고있는 고통보다 훨씬 더 많은 것 같다. 결국 샤딩을 활용하고 싶다면 나로부터 고통이 될 것 같다. 어느 클러스터가 ID가 증가했는지 알 수 없습니다. 나는 지금 그것의 객체 ID로 그것을 찾는 것만으로 갈 것입니다. 감사 :) –

-2

쳇! 우리가 여기서 최상의 방법을 알 수 있다면 우리는 모두 더 나아질 것입니다. 말하고있는 머리는 아직도 말하고 있고, 얼마 동안있을 것이다.

내가 어떻게 접근 할 수 있는지는 내가 할 수있는만큼 아름답다. 만약 내가 의미있는 텍스트 문자열을 가지고 있다면 그것은 가장 좋은 경우 일 것이다.

내가 할 수 없다면 나는 당신이 제안한 해시 일을 할 것입니다.

두 가지 해결책 모두 고유하게 유지해야합니다. 저장하기 전에 조회를 의미합니다.

성능면에서 SQL과 동일합니다. 당신이 사물을 보는 데 사용하는 색인을 만드십시오. Mongo는 복합 인덱스를 잘 처리하므로 카테고리 이름과 해시가 매우 빠르게 검색됩니다. 당신이 알아야 할

관련 문제