Pregunta

Estoy usando MongoDB w / Sinatra para una aplicación de iPhone.

Tengo una colección MongoDB users y una colección GridFS picture. Cada usuario ha una imagen, por lo que, en un principio, sólo ajustar la ObjectId para la imagen a ser el mismo que el usuario correspondiente. Eso hace que sea fácil, dado OBJECTID del usuario, obtener la imagen de ese usuario con una sola consulta . Entonces, yo estaba planeando para almacenar el hash MD5 de la imagen en el objeto de usuario para que el iPhone sabría para descargar la foto sólo si el hash MD5 había cambiado. Esto funcionaría, pero tenía que modificar el Grid clase Ruby a conseguir el MD5

Pero entonces, Kyle banquero sugerí que simplemente almacenar el picture_id, en lugar del MD5, en el objeto de usuario. Pero, si hago lo que, dada una ObjectId usuario, que tendría que la primera consulta picture_id por parte del usuario, y luego consultar la imagen (2 consultas). ¿Hay alguna manera, en una consulta, para obtener la imagen dada ObjectId de un usuario? Leyendo sobre GridFS índices , creo que hay una manera de almacenar ObjectId del usuario en los metadatos de la imagen y luego establece un índice en ese campo. De esta manera, podría hacerlo en una consulta. Si eso es correcto, ¿cuál es la mirada código como para hacer eso en Ruby?

Por desgracia, debo siquiera molestarse? Yo sólo podía usar la misma facilidad con la picture_id para consultar la imagen, que es lo que voy a hacer por ahora, pero también estaría bien, desde el punto de vista sintáctico, para poder consultar la imagen (en una consulta indexada / rápido ) por el user_id. Un poco como el gráfico API de Facebook te permite hacer, por ejemplo, http://graph.facebook.com/mattdipasquale/picture .

¿Fue útil?

Solución

Claro. Al igual que usted sugiere, simplemente almacenar el user_id en algún lugar en el objeto de archivo de la imagen, y construir un un índice en ese campo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top