[Python-es] problema con python+mongodb

Chema Cortes pych3m4 en gmail.com
Sab Nov 2 04:16:52 CET 2013


El día 1 de noviembre de 2013 22:44, Jorge <shephiroth en hotmail.com> escribió:
> Buenas.
>
> Soy nuevo en este de mongodb (base de datos no relacional) y no se si lo que
> intento es imposible o simplemente lo estoy haciendo mal.
>
> A la hora de crear la estructura de mis documentos estoy utilizando listas
> de diccionarios. A la hora de introducir datos no hay problema, para buscar
> datos estoy utilizando mapreduces...pero para modificar datos me he
> encontrado con un gran problema, y es que solo modifica el primer valor
> valor de la lista que cumple con las condiciones. Hay algun modo de que si
> mas de un valor de la lista cumple con las condiciones del find lo modifique???
>
> Mi estructura:
> [{"datos":"datos",....
>   "mi_lista": [
>     {"id":1, "otro_id":3, "value":10},
>     {"id":2, "otro_id":3, "value":3}]
> }]
>
> Mi consulta:
> mongodb["proyecto"]["coleccion"].update(
>   {"mi_lista.otro_id":3},
>   {"mi_lista.$.value":7}
> )
>
> Esta funcion solo modifica la primera ocurrencia de la lista en cada
> documento. Hay alguna manera para que modifique todos los diccionarios que
> cumplan con la condicion impuesta??

No se puede (no sería una operación atómica). O actualizas
separadamente cada diccionario, o usas el patrón "Update if
Current"[1] para actualizar todo el documento.

[1]: http://docs.mongodb.org/manual/tutorial/isolate-sequence-of-operations/#update-if-current

>
> GRACIAS
>
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> https://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/



-- 
Hyperreals *R  "Quarks, bits y otras criaturas infinitesimales":
http://ch3m4.org/blog
Buscador Python Hispano: http://ch3m4.org/python-es


Más información sobre la lista de distribución Python-es