How to delete an embedded document using Mongoengine?

I have a collection with an EmbeddedDocumentField. I'm having trouble finding examples of removing an embedded document from a collection. Can someone provide me an example or link to one?

This is what my setup looks like:

  • Python 2.7.5
  • Django 1.5.5
  • MongoEngine 0.8.7

code:

class Merchant(Document): merchant_id = StringField(max_length=50) merchant_name = StringField(max_length=150) merchant_name_search_alias = StringField(max_length=150) website = StringField(max_length=150) location = ListField(EmbeddedDocumentField(Location)) address = StringField(max_length=50) city = StringField(max_length=30) state = StringField(max_length=20) zipcode = IntField() phone_nummber = StringField(max_length=10) sub_lat = FloatField() sub_lng = FloatField() country = StringField(max_length=20) promotion = ListField(EmbeddedDocumentField(Promotion)) class Promotion(EmbeddedDocument): provider_name = StringField(max_length=50) provider_website = URLField() promo_name = StringField(max_length=300) promo_name_search_alias = StringField(max_length=100) retail_price = DecimalField(precision=2, force_string=True) discount_price = DecimalField(precision=2, force_string=True) deal_url = URLField() buy_url = URLField() deal_image_url = URLField() description = StringField(max_length=1000) start_at = DateTimeField() end_at = DateTimeField() category = StringField(max_length=50) dq_category = StringField(max_length=50) keywords = StringField(max_length=100) 
+6
source share
1 answer

You can $unset field using MyDoc.objects.update(unset__myField=1) Or using $pull to remove a single value from the list, for example: MyDoc.objects.update(pull__myField=Value)

See: http://docs.mongoengine.org/en/latest/guide/querying.html?highlight=unset#atomic-updates

+7
source

All Articles