如何使用python的mongoengine检索不同集合中的记录?

时间:2012-08-08 23:25:50

标签: python mongodb mongoengine

我有一个模型“Post”:

class Post(db.Document):
    created_at = db.DateTimeField(default=datetime.datetime.now, required=True)
    title = db.StringField(max_length=255, required=True)
    slug = db.StringField(max_length=255, required=True)
    body = db.StringField(required=True)

假设我使用Post对象创建了一个post变量,但在我将其保存之前,我将其保存为默认(Post)以外的集合名称,例如:

post._meta['collection'] = "customcollection"
post.save();

那么如何使用 mongoengine 获取 customcollection 中的所有文档?

通常情况下,如果我没有设置 customcollection ,我可以执行以下操作:

for item in Post.objects:
    print item.title

但是,由于我设置了自定义集合,我希望能够执行以下操作:

for item in customcollection.objects:
    print item.title

虽然我得到了:

NameError: global name 'customcollection' is not defined

我需要在语法中做些什么来获取 customcollection 中的所有Post对象?

1 个答案:

答案 0 :(得分:2)

如果您希望Post文档类指向customcollection,请执行以下操作:

class Post(db.Document):
    created_at = db.DateTimeField(default=datetime.datetime.now, required=True)
    title = db.StringField(max_length=255, required=True)
    slug = db.StringField(max_length=255, required=True)
    body = db.StringField(required=True)
    meta = {'collection': 'customcollection'}

现在你做的时候:

for item in Post.objects:
    print item.title

它应该从customcollection集合中读取其帖子。