0

私は次のモデルを持っています:

class User(Document):
    first_name = StringField(required=True)
    last_name = StringField(required=True)
    username = StringField(required=True)

class TwitterUser(User):
    meta = {"collection":"TwitterUsers"}
    access_token = StringField(required=True)
    twitter_id = StringField(required=True)

class FacebookUser(User):
    meta = {"collection":"FacebookUsers"}
    fb_id = StringField(required=True)
    access_token = StringField(required=True)

アプリケーションのある時点で、access_tokenに基づいてユーザーを取得する必要があります。ただし、たとえばTwitterユーザーがいて、User.objects(access_token = at).get()を実行すると、結果が得られません。TwitterUser.objects(access_token = cookie).get()を実行すると、機能します。

親コレクションをクエリして子クラスを取得する方法はありますか?

4

1 に答える 1

1

Userその子供たちが家に引っ越して別のコレクションに住んでいることを知らないので、それは現在不可能です。子供たちのために別のコレクションが必要ですか?もしそうなら、あなたは複数のクエリを実行し、Userが見つかったら停止する必要があります。

または、スキーマを変更し、クエリの共通部分を抽象化してから、ソーシャルプラットフォーム固有の部分を別のコレクションに含め、GenericReferenceField-を介してリンクすることもできます。つまり、常に2つのクエリが必要になります。

于 2012-09-18T19:20:31.590 に答える