3

MongoEngineでモデルを設定し、クエリを実行しようとしましたが(コレクションにはすでに数十のドキュメントがあります)、クエリセットは空です。

>>> mymodel.objects
[]

新しいドキュメントを追加すると、それらは後続のクエリに表示されますが、既存のドキュメントの兆候があります。

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

何が得られますか?参考までに、これが私のモデル定義です。

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

この質問にMongoEngineの作者自身が回答した場合は、事前にあなたが素晴らしいことを表明したいと思います。

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 に答える