当前位置: 首页 > 面试题库 >

使用golang在Google App Engine数据存储上执行“ IN Array”查询

景光赫
2023-03-14
问题内容

有没有一种方法可以ids []int64对数据存储区进行查询?我尝试了以下无济于事。

  1. 错误出

    q := datastore.NewQuery("Category").Filter("Id IN", ids)
    
  2. 让我了解数据存储区中的所有类别

    for _, id := range ids {
    q.Filter("Id =", id)
    

    }

在icza回答之后

var keys []*datastore.Key

for _, id := range ids {
    keys = append(keys, datastore.NewKey(c, "Category", "", id, nil))
}

categories := make([]Category, len(keys))
err := datastore.GetMulti(c, keys, categories)
if err != nil {
    return nil, err
}

问题答案:

通常"IN",数据存储区不支持过滤器。Query.Filter()清单文档列出了允许的运算符

">", "<", ">=", "<=", or "="

您可以为要作为过滤依据的数组中的每个元素执行一个 单独的
查询。同样,如果元素在连续范围内,则可以INid>=min和代替id<=max。例如:

ids := []int64{1,2,3,4}
q := datastore.NewQuery("Category").Filter("Id>=", 1).Filter("Id<=", 4)

还要注意,虽然IN通常不支持,但是如果属性是实体键本身,则可以使用datastore.GetMulti()函数获取由其键数组指定的实体列表:

func GetMulti(c appengine.Context, key []*Key, dst interface{}) error

注意:

第二次尝试返回所有实体,因为您调用Filter()了查询,但是没有存储返回值,因此最终执行的查询将根本没有任何过滤器。Query.Filter()返回包含您刚刚指定的过滤器的派生查询,您必须使用返回的Query进行中查询。所以应该是:

q = q.Filter("Id=", id)

但是,即使这样也不起作用:如果指定了多个过滤器,它们将处于逻辑AND连接,因此很可能会给您0结果,因为我怀疑在Id列表和包含您所有ID的类别中都不会存在想要过滤。



 类似资料:
  • 问题内容: 所以这是我的问题。我有一个存储mongodbs对象的数组。使用mgo和bson包在一个查询中全部检索它们的正确方法是什么? 因此,如果数组是这样的: 我们如何进行查询?我尝试过,但是我知道它是错误的。 提前致谢 问题答案: 如果文档使用字符串ID存储,则代码看起来正确。 这些ID看起来像十六进制编码的对象ID。如果对象标识符是对象ID,则需要将十六进制字符串转换为对象ID:

  • 使用Spring Boot应用程序。我有一个类UserService,我在其中创建了一个动态查询,根据请求参数具有多个or条件: 我有UserRepository接口,我需要执行这个查询。到目前为止,我使用了findById等JPA函数或@Query(“从事件中选择id”)。 如何将此查询从服务类传递到存储库并执行它?

  • 在具有管道和转发功能的MIPS体系结构上: add指令将在步骤3(执行操作)准备好结果,但我假设sw指令希望在步骤2(指令解码)得到结果 David A. Patterson的《计算机组织与设计》一书中有一个已解决的练习:在以下代码段中找到危险并重新排序指令以避免任何管道停滞: 解决方案: 在解决方案中,它正确识别加载使用危险并相应地重新排列代码,但是否也存在执行存储危险?

  • 问题内容: 我有一个名为“ df”的熊猫数据集。 我该如何做以下事情? 谢谢。 对于那些了解R的人,有一个名为sqldf的库,您可以在R中执行SQL代码,我的问题基本上是,是否在python中有像sqldf这样的库 问题答案: 这不应该做,您可以看一下包(与R中的一样) 更新2020-07-10 更新

  • 问题内容: Go对于此SQL查询中的第二个参数想要什么。我正在尝试在postgres中使用查找。 我真正想要的是: 问题答案: 查询只是使用varargs来替换sql中的参数,因此,在您的示例中,您只需要执行 例如,这个和第二个示例的内容是动态的,那么您将 如果“ IN”部分具有可变的args,则可以执行(播放)

  • 问题内容: 我有定期被推送到数据库中的Java代码(很难解释为什么它存在于数据库中,而这只会使焦点从主要问题上移开)。 在运行时,我查询数据库。我可以执行从数据库中获得的代码吗?我只在代码中存储main方法的内容。运行数据库的服务器是HTTP服务器。 数据库中的示例代码(仅供参考): 预期产量: 问题答案: 任何Java程序都是正确的Groovy程序。因此,您可以将Groovy依赖项添加到项目中,