我有一个带有嵌入式文档的集合,它有一个嵌入文档列表,需要能够删除alert_list index [x],但是无法创建一个有效的pull命令。这是我的模型结构:
class Alert(medb.EmbeddedDocument):
name = medb.StringField(default = 'new alert')
class Sensor(medb.EmbeddedDocument):
name = medb.StringField(default='')
alert_list = medb.ListField(medb.EmbeddedDocumentField(Alert), default=Alert)
class SiteConfig(medb.Document):
name = medb.StringField(default = 'name')
sensordict = medb.MapField(medb.EmbeddedDocumentField(Sensor))
#delete alert_item #2 for sensordict['99']
SiteConfig.objects(id=siteid).update_one(pull__ ????? what goes here???
我可以像这样在pymongo中做这件事(而且效果很好):
#load site into pymongo
pysite = pydb.db.SiteConfig.find_one({'_id': ObjectId(siteid)})
#delete the alert
del pysite['sensordict'][sensorid]['alert_list'][alertindex]
#save modified Site back to db
pydb.db.SiteConfig.replace_one({'_id': ObjectId(siteid)}, pysite, upsert=True)
但是如果可能的话,更愿意使用MongoEngine。 - 有什么建议? 谢谢 比尔