title: How do I cascade delete in this scenario using MongoEngine?
body: <p>I have this simple model:</p>
  
  <pre><code>from mongoengine import *
  from datetime import datetime
  
  class Person(Document):
      firstname = StringField(required=True)
  
      @property
      def comments(self):
          return Comment.objects(author=self).all()
  
  class Comment(Document):
      text = StringField(required=True)
      timestamp = DateTimeField(required=True, default=datetime.now())
      author = ReferenceField('Person', required=True, reverse_delete_rule=CASCADE)
  
  class Program(Document):
      title = StringField(required=True)
      comments = ListField(ReferenceField('Comment'))
  
  class Episode(Document):
      title = StringField(required=True)
      comments = ListField(ReferenceField('Comment'))
  </code></pre>
  
  <p>As you can see, both Programs and Episodes can have comments.  Initially, I tried to embed the comments but I seemed to run into a brick wall.  So I'm trying Comments as a Document class instead.  My question is, how do I model it so that:</p>
  
  <ol>
  <li>When a Person is deleted, so are all their comments</li>
  <li>When a Comment is deleted (either directly or indirectly), it is removed from its parent</li>
  <li>When a Program or Episode is deleted, so are the Comment objects</li>
  </ol>
  
  <p>I'm use to doing all this manually in MongoDB (and SQLa, for that matter), but I'm new to MongoEngine and I'm struggling a bit.  Any help would be awesome!</p>