3

I set up my model in MongoEngine, and try to query it (I already have a few dozen documents in my collection), but the queryset is empty:

>>> mymodel.objects
[]

I can add new documents, and those show up in subsequent queries, but there's sign of my preexisting documents:

>>> thingy = mymodel(a=2, b=3)
>>> thingy.save()
>>> mymodel.objects
[<mymodel: mymodel object>]

What gives? For reference, here's my model definition:

from django.conf import settings
from mongoengine import *

connect(settings.MONGO_DATABASE, 
        host=settings.MONGO_HOST, port=settings.MONGO_PORT)

class metadata(Document):

    meta = {'collection': 'metadata'}

    _id   = StringField()
    name  = StringField()
    _type = StringField()
    terms = ListField()
    level = StringField()
    abbreviation  = StringField()
    latest_update = DateTimeField()
    feature_flags = ListField()
    session_details  = DictField()
    legislature_name = StringField()
    lower_chamber_name = StringField()
    upper_chamber_term = IntField()
    upper_chamber_name = StringField()
    lower_chamber_term = IntField()
    lower_chamber_title = StringField()
    upper_chamber_title = StringField()
    _ignored_scraped_sessions = ListField()

In case this question gets answered by the author of MongoEngine himself, I wish to express in advance that YOU ARE AWESOME!

4

1 回答 1

1

没关系,文档回答了我的问题:

要将 MongoEngine 与现有数据一起使用,您必须allow_inheritance = False在模型定义中进行设置,因为 MongoEngine 的继承工具会在您的文档(_cls 和 _types)上设置其他属性,然后(显然)使用它们来过滤 MongoEngine 查询。另一种选择可能是将这些属性添加到现有文档中。

http://docs.mongoengine.org/guide/defining-documents.html

于 2012-02-03T21:36:40.957 回答