2012-02-01 7 views
2

MongoDB ID는 단일 db 클러스터에 대해 고유합니다. 특정 ObjectID가 사용되는 컬렉션을 가져올 수 있습니까?ObjectID별로 MongoDB 컬렉션 가져 오기

나는 ObjectID의 16 진수 표현을 가지고 있으며이 ID를 가진 문서가 들어있는 콜렉션을 알아야합니다. 가능합니까?

답변

1

유스 케이스에 대해서는 잘 모르겠지만 ObjectID를 _id으로 사용하는 경우 짧은 대답은 '아니오'입니다.

BSON ObjectID는 4 바이트 타임 스탬프 (신기원부터의 초), 3 바이트 컴퓨터 ID, 2 바이트 프로세스 ID 및 3 바이트 카운터로 구성된 12 바이트 값입니다 ]

또는 도식적 :

|0 1 2 3 | 4 5 6 | 7 8 | 9 10 11 | 
| time | machine | pid | inc | 

그래서 거기에 저장된 더 수집 정보가 없습니다.

그러나, 어떤 값은 그래서 당신은

[1] http://www.mongodb.org/display/DOCS/Object+IDs#ObjectIDs-TheBSONObjectIdDatatype 그건

3

가 아닌 그게 전부가 필요한 경우 수집 정보를 저장할 수있는 자신 만의 규칙을 ... 사용할 수 _id 사용할 수 있습니다 네이티브 기능이지만 모든 컬렉션을 반복하여 (db.getCollectionNames())을 호출하고 find({_id: <yourid>}) 쿼리를 호출하여 가능합니다. 분명히 이것은 매우 느린 작업이 될 것이므로 스키마 변경 또는 _id 값으로 ObjectId 이외의 다른 것을 사용하는 것이 아마 당신을 향한 길일 것입니다.

관련 문제