2016-01-27 48 views
1

在App Engine數據存儲中使用查詢,如何指定獲取與具有變量值的屬性匹配的鍵?谷歌應用程序引擎數據存儲使用「in」運算符進行查詢

var Person struct { 
    name string 
    department string 
} 

//Query 
q := datastore.NewQuery("Person").Filter("department = ", "department1").KeysOnly() 

在上面的查詢,而不是「=」運營商,我想「IN」操作符來指定不止1個價值即取誰屬於department1所有的人鍵,department2,department3等

這是可能與1查詢?或者我需要爲每個部門進行一次查詢?

回答

1

其他運行時允許「IN」運算符進行數據存儲查詢。然而,這僅僅是一種便利:在引擎蓋下,datastore makes individual queries for each element in the list

如果您的實體數量相對較少,則可以更有效地檢索所有實體,然後根據「部門」屬性過濾結果,而不是發出N個查詢來搜索N個可能的部門。

0

我相信你可以使用平等過濾器調用嵌套過濾器來獲得預期的結果。

如果您訪問https://cloud.google.com/appengine/docs/go/datastore/queries#Go_Filters並搜索「具有多個值的屬性可能會以令人驚訝的方式運行」,您會看到一個示例。

所以,如果你做以下它可能會給你你想要的。

q := datastore.NewQuery("Person").Filter("department = ", "department1").Filter("department = ", "department2").Filter("department = ", "department3").KeysOnly() 
+0

這不起作用。部門屬性不是列表屬性。 –

相關問題