BiDirectional Key to< - > GAE中的“CompositKey”查找?

时间:2013-02-23 10:38:35

标签: google-app-engine google-cloud-datastore go

我在GAE上写了一个Go应用程序 我有一个名为Connection{Token, ToAdress, FromAdress}

的类型

我想将它存储在数据存储区中,以便我可以通过它查找 GetConnectionByT(Token string) 但也通过 GetConnectionByA(FromAdress,ToAdress string)

这样做的最佳方式是什么?现在我的Connect类型有两个不同的.key()函数,每次添加时都会插入带有不同键的重复条目,但这感觉非常错误:)

datastore.NewQuery("Connection").Filter还有什么路要走? Seames认为密钥应该更快更便宜?但如果不是如何过滤多个字段?

1 个答案:

答案 0 :(得分:1)

如果您选中the documentation for datastore.Query.Filter,则会注意到多个过滤器已进行AND运算。所以你可以做这件事:

q := datastore.NewQuery("Connection").
    Filter("FromAddress =", a1).
    Filter("ToAddress =", a2).
    Order("-FromAddress")

如果您有相关实体的密钥,那么是的,使用密钥可能会更快。但是,从你的问题中的描述来看,这有点难以理解。