from mongoengine import * connect('tumblelog') class Comment(EmbeddedDocument): content = StringField() name = StringField(max_length=120) class User(Document): email = StringField(required=True) first_name = StringField(max_length=50) last_name = StringField(max_length=50) class Post(Document): title = StringField(max_length=120, required=True) author = ReferenceField(User) tags = ListField(StringField(max_length=30)) comments = ListField(EmbeddedDocumentField(Comment)) class TextPost(Post): content = StringField() class ImagePost(Post): image_path = StringField() class LinkPost(Post): link_url = StringField() Post.drop_collection() john = User(email='jdoe@example.com', first_name='John', last_name='Doe') john.save() post1 = TextPost(title='Fun with MongoEngine', author=john) post1.content = 'Took a look at MongoEngine today, looks pretty cool.' post1.tags = ['mongodb', 'mongoengine'] post1.save() post2 = LinkPost(title='MongoEngine Documentation', author=john) post2.link_url = 'http://tractiondigital.com/labs/mongoengine/docs' post2.tags = ['mongoengine'] post2.save() print 'ALL POSTS' print for post in Post.objects: print post.title print '=' * post.title.count() if isinstance(post, TextPost): print post.content if isinstance(post, LinkPost): print 'Link:', post.link_url print print print 'POSTS TAGGED \'MONGODB\'' print for post in Post.objects(tags='mongodb'): print post.title print num_posts = Post.objects(tags='mongodb').count() print 'Found %d posts with tag "mongodb"' % num_posts