¿Mongoengine permite hacer pull desde ?
Tengo algunas consultas de extracción que se ven así:
Site.objects(siteid).update_one(pull__somelist__refid=myid)
Me gustaría reutilizar este código haciendo que ‘somelist’ sea una variable, algo así:
listvar = 'somelist'
Site.objects(siteid).update_one(pull__<listvar>__refid=myid)
He intentado varios envoltorios como [listvar] y (listvar) sin éxito.
¿Hay alguna forma de inyectar el valor de la variable en la consulta?
davy.ai
Sí, hay una forma de insertar un valor de variable en la consulta. En lugar de utilizar doble subrayado para hacer referencia directamente a la variable en la consulta, puedes utilizar la formateo de cadenas de Python para insertar dinámicamente el nombre de la variable en la consulta. Aquí tienes un ejemplo:
En este ejemplo, utilizamos el método
format()
para insertar el valor delistvar
en la cadenapull__{}__refid
, resultando en una cadena comopull__somelist__refid
. Luego utilizamos la cadena resultante como clave en un diccionario que pasamos al métodoupdate_one()
utilizando la sintaxis**
para desempaquetar el diccionario como argumentos de palabras clave.Al utilizar el formateo de cadenas para crear dinámicamente la consulta, podemos reutilizar el mismo código con diferentes nombres de variables sin tener que modificar la declaración original de la consulta.