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

如果我有Order子句,则Google App Engine数据存储区不返回任何行

诸葛雨泽
2023-03-14
问题内容

我在数据存储区中有一个“种类”,如下所示:

type CompanyDS struct {
    Name string
}

如果我使用下面的“ order”子句查询它,则不返回任何行(但不给出任何错误):

var companiesDS []CompanyDS
datastore.NewQuery("Company").Order("Name").GetAll(c, &companiesDS)

但是,如果删除“ order(“ Name”)”部分,它将返回所有行。


问题答案:

由于没有Order()查询您就可以查询所有实体,这意味着它们确实具有name "Company"和property的存在"Name"

单个属性的索引会自动创建,因此您无需为其指定显式索引。

但是,如果您无法使用像这样的单个属性排序来列出它们Order("Name"),则意味着您现有的实体不会使用该Name属性编制索引。注意,每个单个实体的索引可能不同。将实体保存(放入)数据存储区后,您可以指定要索引哪些属性,哪些不索引。

您可以在Google Cloud Platform数据存储区控制台上确认这一点:执行查询

select * from Company

然后单击任何结果(其ID),然后您将看到该实体的详细信息,列出了被索引的属性和未被索引的属性。

固定:

您可以在控制台上编辑实体:单击“名称”属性,然后在保存之前检查“为该属性编制索引”。这将重新保存该实体,对其进行Name索引,因此它将显示在下一个查询中(按排序Name)。

您无需为所有实体手动执行此操作。使用您的Go查询代码(不带Order()),查询所有实体,然后重新保存所有实体而不做任何修改,因此,结果Name将被索引(因为您CompanyDS不会关闭该Name属性的索引)。确保您的结构包含所有属性,否则在重新保存时会丢失它们。

注意: 您应确保保存Company实体的代码将其保存为带Name索引的。

例如,在Go中,带有value 的struct标记",noindex"将禁用对单个属性的索引,如本示例所示:

type CompanyDS struct {
    Name string `datastore:",noindex"`
}


 类似资料:
  • 问题内容: 我在node.js中编写一个函数来查询PostgreSQL表。 如果该行存在,我想从该行返回id列。 如果不存在,我想将其插入并返回ID()。 我一直在尝试和语句的变体,但似乎无法使其正常工作。 问题答案: 我建议在数据库端进行检查,然后将ID返回给nodejs。 例子: 而不是在Node.js端(在此示例中,我使用的是node-postgres):

  • 问题内容: 我试图获得过去7天注册的用户数量以显示在图表上,如果mysql返回0而不是没有行,那将是很好的。目前,它只返回每天都有一行值的行 问题答案: 尝试:

  • 问题内容: 在一个SQL语句中,我尝试插入一行,如果由于约束而失败,则返回现有行。 我有: 该列具有唯一约束。我尝试在末尾追加,但这仍然不返回现有行。 为什么是这样?我以为我的最后一条语句将被执行并返回。有任何想法吗? 注意:由于某些复杂的竞争条件,我无法使用Postgres函数或多个SQL语句。 问题答案: WITH d(t, e) AS ( VALUES (‘abcdefg’, ‘2014-0

  • 我正在使用火库实时数据库函数 .orderByChild() 和 .equalTo() 来获取要更新的数据节点。但是,我似乎无法从查询中获得任何结果。 我的数据库结构 我的代码 代码日志 senderSnapshot null senderSnapshot金额0 我已经手动检查了有几个节点,其中“sid”设置为我正在寻找的“userId”。 为什么我的查询没有得到任何结果? 看起来我必须搜索dbR

  • 我的数据库中有两个表: 表1:购买物品 表1列出了购买的物品,表2每小时更新一次每件物品的当前价格。因此,从表2中可以清楚地看出,肉类最后一次交易是在2013年2月20日上午10点,而鱼类不是在同一天交易的,它是在2013年2月19日上午9点交易的,鸡肉是在2013年2月20日上午9点交易的。我想做的是,列出表1中的所有项目,并加入表2中各个项目的最后交易价格,如下所示: 这里应该应用什么类型的连

  • 我当前正在过滤一个流,但是如果过滤器没有返回任何匹配项,我想返回一个默认值。这是在附加流的链中,所以我使用它来避免在一个步骤没有任何结果时链停止。 目前,我正在通过将筛选结果收集到一个列表中来伪造它,如果列表为空,请创建新的默认列表并将其作为流返回。如果列表不为空,则将结果转换回流以将其传递回。 有什么更流的方式来实现这一点,而不需要去列表和返回流?