67 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			67 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 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 '=' * len(post.title)
 | |
| 
 | |
|     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
 |