Pergunta

Estou usando o MongoDB com Sinatra para um aplicativo para iPhone.

eu tenho um users Coleção MongoDB e um picture Coleção Gridfs. Cada usuário tem uma imagem, então, inicialmente, eu apenas defini o ObjectId Para que a imagem seja a mesma que o usuário correspondente. Isso facilitou, Dado o objeto do usuário, obtenha a imagem desse usuário com apenas uma consulta. Então, eu estava planejando armazenar o hash do MD5 da imagem no objeto do usuário para que o iPhone soubesse baixar a imagem apenas se o hash do MD5 tivesse mudado. Isso funcionaria, mas eu tive que modifique o Grid Aula de rubi para obter o md5

Mas então, Kyle Banker sugerido que eu acabei de armazenar o picture_id, em vez do MD5, no objeto do usuário. Mas, se eu fizer isso, dado a um usuário ObjectId, Eu teria que primeiro consultar o picture_id do usuário e, em seguida, consulte a imagem (2 consultas). Existe uma maneira, em uma consulta, para obter a imagem dada a um usuário ObjectId? Lendo Índices Gridfs, Acho que há uma maneira de armazenar o usuário ObjectId nos meta -dados da figura e defina um índice nesse campo. Dessa forma, eu poderia fazer isso em uma consulta. Se estiver correto, como é o código fazer isso em Ruby?

Infelizmente, eu deveria me incomodar? Eu poderia usar com facilidade o picture_id Para consultar a imagem, que é o que farei por enquanto, mas também seria bom, de uma perspectiva sintática, poder consultar a imagem (em uma consulta indexada/rápida) pela user_id. Como a API do gráfico do Facebook permite que você faça, por exemplo, http://graph.facebook.com/mattdipasquale/picture.

Foi útil?

Solução

Claro. Como você sugere, basta armazenar o user_id em algum lugar no objeto de arquivo da imagem e criar um índice nesse campo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top