MongoDB ID는 단일 db 클러스터에 대해 고유합니다. 특정 ObjectID가 사용되는 컬렉션을 가져올 수 있습니까?ObjectID별로 MongoDB 컬렉션 가져 오기
나는 ObjectID의 16 진수 표현을 가지고 있으며이 ID를 가진 문서가 들어있는 콜렉션을 알아야합니다. 가능합니까?
MongoDB ID는 단일 db 클러스터에 대해 고유합니다. 특정 ObjectID가 사용되는 컬렉션을 가져올 수 있습니까?ObjectID별로 MongoDB 컬렉션 가져 오기
나는 ObjectID의 16 진수 표현을 가지고 있으며이 ID를 가진 문서가 들어있는 콜렉션을 알아야합니다. 가능합니까?
유스 케이스에 대해서는 잘 모르겠지만 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 그건
가 아닌 그게 전부가 필요한 경우 수집 정보를 저장할 수있는 자신 만의 규칙을 ... 사용할 수 _id
사용할 수 있습니다 네이티브 기능이지만 모든 컬렉션을 반복하여 (db.getCollectionNames())
을 호출하고 find({_id: <yourid>})
쿼리를 호출하여 가능합니다. 분명히 이것은 매우 느린 작업이 될 것이므로 스키마 변경 또는 _id 값으로 ObjectId 이외의 다른 것을 사용하는 것이 아마 당신을 향한 길일 것입니다.