2010-10-15 60 views
2

根據與所提供的值最接近的值,從數據存儲中獲取單個實體的建議(最有效)方式是什麼?從數據存儲中獲取「最近」值

例如,我有以下的DataModel:

class MyObject(db.Model): 
    someValue = db.IntegerProperty() 
    shortDescription = db.TextProperty() 

期間獲得一個值傳遞,我想查詢對象(一個或多個)的數據存儲區即是最接近所提供的值。

如果距離相同,多個結果都可以。即如果我有兩個對象與2和4 someValue和我通過3.

任何意見,將不勝感激。

回答

4

上升和下降指標將自動爲所有屬性創建的,所以你可以做這樣的事情:

results1 = MyObject.all().order('someValue').filter('someValue >=', 3).fetch(50) 
results2 = MyObject.all().order('-someValue').filter('someValue <', 3).fetch(50) 

這會給你兩個結果集多達100個對象中搜索值的接近。

+0

謝謝你,我希望有一個單一的查詢,但這個工作就像一個魅力。 – MarkPowell 2010-10-15 18:15:54

2

GQL查詢GqlQuery("SELECT * FROM MyObject WHERE someValue < :1 ORDER BY someValue DESC", input).get()將返回最接近和小於輸入值的一個項目。

要獲得最接近且大於輸入的項目,切換起來:SELECT * FROM MyObject WHERE someValue > :1 ORDER BY someValue ASC"

不幸的是,我不認爲有一個方法,使這一個查詢,但我可能是錯的。

+0

謝謝,傑森,希望我可以將兩個答案都標記爲已接受。 – MarkPowell 2010-10-15 18:16:18