2012-04-14 6 views
1

내 질문에 대한 답변은 자바 드라이버를 사용하려는 경우를 제외하고는 아래 질문과 같습니다. 자바 드라이버 위의 질문에 주어진자바 드라이버를 사용하는 GridFS의 사용자 정의 _id

create own files_id in mongo GridFs using PHP

googlegroup 링크는 C#을 드라이버 사실이다. Java 드라이버 GridFS api를 확인하면 GridFS 파일 콜렉션의 _id 필드를 설정할 방법이없는 것으로 보입니다.

Java 드라이버에서이 작업을 수행 할 수있는 방법이 있습니까? 다른 드라이버를 사용하도록 전환해야한다면 불필요한 혼란이 많이 생길 수 있습니다.

+0

현재 보이지는 않지만 개선 된 부분으로 제기되었습니다. https://jira.mongodb.org/browse/JAVA-525 구현 될 때까지 디자인을 조정할 수 있습니까? 예 : – samlewis

+0

내가 여기서 풀려고하는 기본적인 문제는 GridFS'chunks' 콜렉션의 샤딩이며 이는 files_id에 전적으로 의존합니다. 'chunks' 컬렉션에 추가 필드를 추가 할 수있는 방법이 있다면 나는 그것에 대해 열려 있습니다. –

+0

위의 jira 케이스가 수정되었으므로 잘하면 다음 릴리스에서 사용할 수 있습니다. Casbah가 신속하게 변화를 통합 할 수있는 경우에만! –

답변

0

GridFSInputFile 클래스의 Put 메소드는 JSON 객체에 필드를 추가하는 데 사용됩니다. 따라서 기본적으로 ObjectId 인 "_id"필드를 추가하면 ObjectId가 대체됩니다.

버전 2.2.3에서 다음 코드를 시도해 보았습니다.

GridFSInputFile gif = gridfs.createFile(new File("c:\\image.jpg")); 
gif.put("_id", 1234567); 
gif.save(); 

파일 컬렉션에는 예상대로 1234567이 포함되어 있습니다. 청크 컬렉션은 file_id와 동일한 값을가집니다.

관련 문제