python - Django: Mongoengine equivalent $addtoset -
this models.py:
from mongoengine import * class venue(document): location_id = stringfield(required=true) name = stringfield(required=true) latitude = floatfield(required=true) longitude = floatfield(required=true) address = stringfield() postal_code = stringfield() city = stringfield() county = stringfield() country_code = stringfield() events = listfield() class event(document): title = stringfield(required=true) description = stringfield(required=true) website = stringfield() start_date = datetimefield(required=true) start_time = datetimefield(required=true) end_date = datetimefield(required=true) end_time = datetimefield(required=true) clearly each venue has many event.
how can push event model mongodb @ end of list events of venue model assuming target based on location_id field?
for example in pymongo use:
db.venue.update({ 'location_id': id }, { '$addtoset' :{ 'events' : { 'title': title, 'website' : website, 'description' : description, 'start_date' : start_date, 'start_time' : start_time, 'end_date' : end_date, 'end_time' : end_time } } }) if have more optimal structure please feel free suggest so.
maybe using referencefield inside listfield
class venue(document): location_id = stringfield(required=true) name = stringfield(required=true) latitude = floatfield(required=true) longitude = floatfield(required=true) address = stringfield() postal_code = stringfield() city = stringfield() county = stringfield() country_code = stringfield() events = listfield(referencefield('event'), default=[]) class event(document): title = stringfield(required=true) description = stringfield(required=true) website = stringfield() start_date = datetimefield(required=true) start_time = datetimefield(required=true) end_date = datetimefield(required=true) end_time = datetimefield(required=true) and venue().events.append(event()) shall help?
p.s. please not use multiple spaces around =
Comments
Post a Comment