El día 1 de noviembre de 2013 22:44, Jorge <shephir...@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@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 _______________________________________________ Python-es mailing list Python-es@python.org https://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/