2011-07-01 78 views
0

注:這個例子僅僅是代表性的問題,而不是一個真正的用例谷歌應用程序引擎 - 只查詢某個字段

我想知道我是否有例如汽車和CarCategory一定的對象:

Owner 
    - name 
    - age 

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

CarCategory 
    - name 
    - property 

我可以查詢某個字段嗎?

例如CarCategory:

查詢= GqlQuery( 「SELECT 類別從汽車」)

我得到這個錯誤:BadQueryError:解析錯誤:預期在符號汽車沒有其他符號

更新:如果希望有某個用戶

擁有的所有類別的清單是什麼

我想以最有效的方式做到這一點。

回答

1

您無法查詢App Engine數據存儲中的各個字段。實體以序列化協議緩衝區的形式存儲和檢索,因此無法只檢索某些字段。

鑑於db.Model抽象,有好多是表示返回的數據沒有合理的方式,無論是 - 你不能簡單地提供一個模型,不僅填補某些領域,因爲這可能違反了約束,並肯定會引起麻煩如果您試圖將其存儲回數據存儲區!

爲了響應您的更新:傳統上這需要一個連接和一個聚合,App Engine上都不支持這兩種連接。您最好的選擇是查詢並檢索所有用戶的實體,並通過Category屬性自行分類。

1

看起來像你有更多的選擇在這裏比自己排序。您可以爲每個類別(例如「Bronco」)創建唯一的key_name,或者使用唯一創建的密鑰「8HJ876KKL」(可能由uuid創建)。然後在Car實體中,您可以擁有一個帶有該類別的key_name的StringProperty。如果您希望汽車屬於多個類別,則可以將其設置爲StringListProperty。然後您可以通過key_name查詢該類別。

另一種選擇是使用Car中的ReferenceProperty指向Category對象。然後,您可以在查找屬於某個類別的每輛車時查詢確切的關鍵字。

我不知道如何有效查詢超過ReferenceProperty與StringProperty與StringListProperty。