使用MongoEngine自动增量

时间:2012-02-11 07:36:51

标签: python mongodb mongoengine

我正在使用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

这会有用吗?有更好的方法吗?

2 个答案:

答案 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()