我有一个模型“ 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


但是,由于我设置了一个customcollection,因此我希望能够执行以下操作:

for item in customcollection.objects:
    print item.title


虽然我得到:

NameError: global name 'customcollection' is not defined


为了能够获取我的customcollection中的所有Post对象,我需要在语法上做什么?

最佳答案

如果要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集合中读取其帖子。

关于python - 如何使用python的mongoengine检索不同集合中的记录?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11874681/

10-09 21:23