我有一个DynamoDB表,其中有一个字母数字字符串作为哈希键(例如“D4ED6962-3EC2-4312-A480-96ECBB48C9DA”)。我需要根据表中的另一个字段查询该表,因此我需要我的查询选择所有键,例如我的字段x在dat x和date y之间。
我知道我需要在哈希键上设置一个条件,在范围键上设置另一个条件,但是我很难编写一个不将查询绑定到特定ID的哈希键条件。
我以为我可以使用一个基于ID为NOT_NULL的冗余条件,但当我使用它时,我得到了错误:
不支持查询键条件
下面是我正在使用的条件,有什么想法如何实现这个目标吗?
Condition hashKeyCondition = new Condition()
.withComparisonOperator(ComparisonOperator.NOT_NULL.toString());
Condition rangeCondition = new Condition()
.withComparisonOperator(ComparisonOperator.BETWEEN.toString())
.withAttributeValueList(new AttributeValue().withS(dateFormatter.print(lastScanTime())),
new AttributeValue().withS(dateFormatter.print(currentScanTime)));
Map<String, Condition> keyConditions = new HashMap<String, Condition>();
keyConditions.put("userId", hashKeyCondition);
keyConditions.put("lastAccesTime", rangeCondition);
提前感谢大家的帮助。
NOT_NULL比较运算符对于哈希键条件无效。查询上哈希键条件的唯一有效运算符是EQ。欲了解更多信息,请访问:http://docs.aws.amazon.com/amazondynamodb/latest/apireference/api_query.html
这意味着查询将无法工作,至少在当前构造表时是如此。您可以使用扫描操作,也可以创建一个单独的表,按日期(哈希)和用户ID(范围)存储数据。
祝你好运!
在DynamoDB中,您可以使用3个API获得项目:
.扫描(灵活但昂贵),
.Query(灵活性较低:必须指定哈希,但开销较小)
.GetItem(按散列,如果表中有散列,则按范围)
实现你想要的目标的唯一方法是:
>
使用扫描,速度慢或昂贵。
使用另一个表(B)作为前一个表(A)的索引,如:
b.hash=“values”b.range=userid
b.lastAccessTime=lastAccessTime(带有辅助索引)
现在,您必须在写操作时维护该索引,但您可以将其与查询操作一起使用,以获取用户标识。查询B:hash='values',lastaccessTime介于x和y之间,选择UserID。
希望这有帮助。
本文向大家介绍详解MySql基本查询、连接查询、子查询、正则表达查询,包括了详解MySql基本查询、连接查询、子查询、正则表达查询的使用技巧和注意事项,需要的朋友参考一下 查询数据指从数据库中获取所需要的数据。查询数据是数据库操作中最常用,也是最重要的操作。用户可以根据自己对数据的需求,使用不同的查询方式。通过不同的查询方式,可以获得不同的数据。MySQL中是使用SELECT语句来查询数据的。在这
我正在尝试使用query-更新行(删除列str_column中的连字符和连字符后的所有字符)- 但上面的查询是删除匹配的行而不是更新。 我不明白,如何更新查询可以删除行??
我正在连接到mysql服务器并进行查询。我一直得到一个ER_BAD_FIELD_ERROR:'field list'中的未知列
我正在尝试获取与登录用户在同一年级的同学列表。 我有这个功能 但我得到了错误: 原因:异常[EclipseLink-6069](Eclipse Persistence Services-2.5.0.V20130507-3FAAC2B):org.Eclipse.Persistence.exceptions.QueryException异常说明:此表达式中的字段[Rocnik.IdRocnik]在此上
我正在为我的音频/视频播放器应用程序提供Android 11支持。实际上,我主要担心的是,谷歌部落不允许玩家应用程序访问所有文件。我不希望我的应用在谷歌商店发布时被拒绝。 在以前的API中,我使用的是权限,包括Android 10(我选择退出作用域存储)。不过,我不知道如何处理Android11,而不让我的应用在谷歌商店上发布时遭到拒绝。我了解到查询记录需要权限,我有以下问题: 谷歌(当我在他们的
我在客户端传递一个网址作为http://xyz.org/audio?s=0.8717912845313549