有效地存储数据存储标签(用于通过标签获取)

问题描述 投票:0回答:1

我经常遇到一种情况,我有这样的事情:

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"},我想要检索包含标签golangprogramming的所有文章,我怎样才能有效地实现这一目标?

google-cloud-datastore
1个回答
1
投票

使用等号在数据存储区中搜索数组作为包含。

https://cloud.google.com/datastore/docs/concepts/queries#properties_with_array_values_can_behave_in_surprising_ways

这意味着,您需要通过此属性使用两个相同的过滤器进行查询。关于GQL的示例。

SELECT * FROM Article WHERE Tags = "golang" AND Tags = "prgramming".

如果Tags是一个数组,则equal将表现为contains。那个。所有的伎俩。

© www.soinside.com 2019 - 2024. All rights reserved.