我经常遇到这样的情况:
type Article struct {
Title string
User string
Content []byte
Tags []string
}
我希望能够执行这样的查询任务:
var articles []Article
query := datastore.NewQuery("Article")
for _, filter := range filters {
if filter.User != "" {
query = query.Filter("User =", filter.User)
}
// how to do if for finding tags
}
keys, err := DatastoreClient().GetAll(ctx, query, &articles)
if err != nil {
return nil, err
}
return articles, nil
我们假设某篇文章包含以下标记[]string{"golang", "ruby", "python", "programming"}
,并且我想检索包含标记golang
和programming
的所有文章,我怎样才能有效地实现这一目标?
答案 0 :(得分:1)
在数据存储区中搜索使用等号的数组作为包含。
这意味着,您需要通过此属性使用两个相同的过滤器进行查询。 关于GQL的示例。
SELECT * FROM Article WHERE Tags = "golang" AND Tags = "prgramming".
如果Tags
是一个数组,则equal将表现为contains。那个。所有的伎俩。