저는 MongoDB를 사용하여 사용자 프로필을 저장하고 있습니다. 이제 GridFS를 사용하여 각 프로필에 대한 그림을 저장하려고합니다. 나는이 문서를 연결 비교하고있어문서의 gridFS 파일에 대한 참조를 저장하는 가장 좋은 방법은 무엇입니까?
두 가지 방법은 다음과 같습니다)
User:
{
"_id": ObjectId('[user_id here]'),
"username": 'myusername',
"image": ObjectId('[file_id here]')
}
B에 대한 참조를 저장 :
A)는 사용자의 image
필드에 파일의 ID에 대한 참조를 저장 파일의 메타 데이터에 사용자 :
File metadata:
{
"user_id": ObjectId('[user_id here]')
}
나는 그것이 응용 프로그램의 내역에 나에게 종속의 방법을 많이 알고있다 (이것은 그 도움이된다면, 이동 될 수 있습니다)하지만 한 가지 방법이나 다른 방식으로하는 것이 보편적으로 도움이되는지 궁금합니다.
감사합니다. 말씀해 주시겠습니까? 나는 방법 B로 1) 사용자를 가져오고, 2) 이전에 검색된 사용자의 사용자 아이디로 메타 데이터가있는 파일을 가져올 수 있다고 가정했습니다. 필자는 파일 메타 데이터에 대한 경험이 없으므로이 내용은 잘못 될 것입니다.하지만 $ grid-> findOne (array ('metadata'=> array ('user_id'=> ObjectId ('user_id 여기]])))) (PHP 드라이버 사용) .. 그게 가능하지 않나요? –
당신이 메타 데이터를 언급했을 때 나는 GridFS가 사용하는 파일 컬렉션이 아닌 별도의 콜렉션을 언급한다고 생각했다 - 기본적으로 user_id를 포함하지 않을 것이기에 나는 머리에 위의 내용을 기본값으로 사용했다. 물론 파일 컬렉션에 user_id를 추가하여 직접 쿼리 할 수 있습니다. 그렇다면 "표준"GridFS 설정을 사용하는 대신 쿼리에 맞게 파일 컬렉션을 올바르게 인덱싱해야합니다. 더 기억하기 쉽지만 유효합니다. 나는 결과로 A 방법을 사용하지만 여전히 당신에게 달려 있습니다 :) –
도움을 주셔서 감사합니다. –