2011-07-05 80 views
2

如何使用列表作爲過濾器在GQL中進行選擇。在GQL過濾器中使用列表

如果我有類

public class Obj{ 

    @Persistent 
    private Long name; 

} 

我怎樣才能得到所有的OBJ的那名不在列表?

+0

http://code.google.com/appengine/docs/python/datastore/gqlreference.html – lucemia

+0

謝謝@lucemia,但我已經讀過它並且本教程對我沒有幫助。 :( – Victor

+0

好吧,順便說一句,你是什麼意思「使用列表作爲過濾器」?你想過濾一個實體的ListProperty?或者你想使用一個列表作爲條件嗎? – lucemia

回答

1

您可以通過將所有過濾器鏈接在一起來獲得結果。

SELECT * FROM User where email != '[email protected]' and email != '[email protected]' and email != '[email protected]' 

Python代碼

q = User.all() 
for i in ilist: 
    q = q.filter("email = ", i) 

但是你可能需要知道有這種類型的查詢一定的侷限性。

注意:IN和!=運算符在幕後使用多個查詢。例如,IN運算符爲列表中的每個項目執行單獨的基礎數據存儲區查詢。返回的實體是所有基礎數​​據存儲區查詢的交叉產物的結果,並且被重複刪除。任何單個GQL查詢最多允許30個數據存儲區查詢。

+0

以及如何處理類似於列表的威脅我已經在使用這個解決方案,但是我想知道如何使用值列表進行過濾 – Victor

+0

您可以通過「in」條件在列表中獲得objs,但是,我不認爲有一種方法可以讓objs不在列表中。 – lucemia