es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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?

Tags:  ,

Answer

  1. Avatar for 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:

    listvar = 'somelist'
    query = 'pull__{}__refid'.format(listvar)
    Site.objects(siteid).update_one(**{query: myid})
    

    En este ejemplo, utilizamos el método format() para insertar el valor de listvar en la cadena pull__{}__refid, resultando en una cadena como pull__somelist__refid. Luego utilizamos la cadena resultante como clave en un diccionario que pasamos al método update_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.

Comments are closed.