Skip to content

Instantly share code, notes, and snippets.

@alexandre
Last active August 29, 2015 14:16
Show Gist options
  • Select an option

  • Save alexandre/49c6a49c7582d6e5dfde to your computer and use it in GitHub Desktop.

Select an option

Save alexandre/49c6a49c7582d6e5dfde to your computer and use it in GitHub Desktop.
Atualizar um atributo ListField(ReferenceField) no Mongoengine.
from app import db  # db == MongoEngine(app)


class Day(db.Document):
    week_day = db.IntField()
    # another attribute
    # ...


class Month(db.Document):
    name = db.StringField()
    days = db.ListField(db.ReferenceField(Day))
    # ...

Uma maneira de atualizar a lista de dias(Day) em um objeto mês (Month) e eliminar repetidos, seria algo como:

days = get_days() # pseudo função que recupera objetos Day
month.days = list(set(month.days + days)) # gerar uma lista com os elementos antigos e novos.

Mas isso pode ser evitado utilizando o recurso $AddToSet do MongoDB e disponivel no MongoEngine:

days = get_days()
Month.objects(id=foo).update(add_to_set__days=days)

Obs.: id=foo é apenas para simular um filtro.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment