我正在使用Flask和MongoEngine开发一个博客引擎,我的帖子需要顺序ID。
我需要MongoEngine为每个新帖子创建一个新ID,所以我想做这样的事情:
class Post(Document):
title = StringField(required=True)
content = StringField(required=True)
published_at = datetime.utcnow()
id = Post.objects.count() + 1
这会有用吗?有更好的方法吗?
答案 0 :(得分:10)
首先,您需要了解为什么需要增量ID?他们解决了什么?
在mongoDB中没有本机解决方案 - 请阅读:http://www.mongodb.org/display/DOCS/How+to+Make+an+Auto+Incrementing+Field
由于您已经拥有帖子pk
的唯一标识符,为什么不使用它?
最后,如果我没有劝阻你愚蠢,那么mongoengine中有一个SequenceField
来处理你的增量。 https://mongoengine-odm.readthedocs.org/en/latest/apireference.html#mongoengine.fields.SequenceField
答案 1 :(得分:2)
我明白了。
Post
类看起来像这样:
class Post(Document):
title = StringField(required=True)
content = StringField(required=True)
published_at = datetime.utcnow()
ID = IntField(min_value=1)
在插入帖子的函数中,我计算可用记录,然后将它们递增1,如下所示:
def create_post(title, content):
Post(title=title, content=content, ID=Post.objects.count() + 1).save()