0

注: この例は問題の代表例であり、実際の使用例ではありません

Car や CarCategory などの特定のオブジェクトがあるかどうかを知りたいです。

Owner
     - name
     - age

Car 
     - name
     - brand
     - category( reference )
     - owner ( reference )

CarCategory
     - name
     - property

特定のフィールドを照会できますか?

たとえば、CarCategory:

query = GqlQuery("車からカテゴリを選択")

このエラーが発生しています: BadQueryError: 解析エラー: シンボル Car に追加のシンボルがないと予想されます

更新: 特定のユーザーが所有するすべてのカテゴリのリストが必要な場合

できるだけ効率の良い方法で行いたいと考えています。

4

2 に答える 2

1

App Engine データストアの個々のフィールドに対してクエリを実行することはできません。エンティティは、シリアル化されたプロトコル バッファとして全体が保存および取得されるため、特定のフィールドのみを取得する方法はありません。

抽象化を考えるとdb.Model、返されたデータを表現するための賢明な方法もありません-制約に違反する可能性があり、保存しようとすると間違いなく問題が発生するため、一部のフィールドのみが入力されたモデルを単純に提供することはできませんデータストアに戻します。

更新に応じて: これには従来、結合と集計が必要でしたが、どちらも App Engine ではサポートされていません。最良の選択肢は、すべてのユーザーのエンティティをクエリして取得し、プロパティごとに自分Carで分類することです。Category

于 2011-07-04T01:39:54.840 に答える
1

ここには、自分で並べ替えるよりも多くのオプションがあるようです。たとえば「Bronco」など、カテゴリごとに一意の key_name を作成するか、一意の作成済みキー「8HJ876KKL」(おそらく uuid によって作成されたもの) を使用できます。次に、Car エンティティで、カテゴリの key_name を持つ StringProperty を持つことができます。車を複数のカテゴリに属させたい場合は、これを StringListProperty にすることができます。次に、key_name でカテゴリをクエリできます。

もう 1 つのオプションは、Car で ReferenceProperty を使用して Category オブジェクトを指すことです。次に、カテゴリに属する​​すべての車を見つけるときに、正確なキーを照会できます。

ReferenceProperty と StringProperty と StringListProperty の比較で、クエリがどれほど効率的かはわかりません。

于 2013-08-11T05:47:55.770 に答える