当我使用以下方法在Aerospike中查询时,它可以工作:
aql> select * from connekt.inapp
如下所示:
但是要查找特定条目我正在尝试跟踪查询,但它不起作用:
aql> select * from connekt.inapp where DIGEST = "viwZnPMMutuTZkPBV/PPL6hmWW0="
错误:(2)AEROSPIKE_ERR_RECORD_NOT_FOUND
如何使用aql从Aerospike获取特定行。
答案 0 :(得分:4)
您看到的摘要“AAAA .... =”这是AQL中的一个美容错误 - 我相信它已经修复了几个月前,不确定哪个版本的TOOLS版本有它。 [Bug - TOOLS-746]
因为你已经知道了摘要 - 你在where =“viwZn ....”中使用了它,这是没有实际意义的。
BTW,做
$aql
aql>HELP
获取常用AQL命令列表的信息。 (其中digest =和edigest =在生产中很少有用.AQL最适合用于探索数据,创建和管理辅助索引,开发UDF和安全管理)
答案 1 :(得分:2)
经过一些研究并通过docs后,我意识到在我的情况下,摘要采用Base64格式,因此我必须使用EDIGEST
进行查询,如下所示:
aql> select * from connekt.inapp where EDIGEST = "viwZnPMMutuTZkPBV/PPL6hmWW0="
来自docs:
提供摘要的HEX表示时(例如来自 服务器日志),使用DIGEST:
SELECT * FROM [。] WHERE DIGEST ='DIGEST_HEX_STRING'
当 提供摘要的Base64表示(例如来自 asbackup文件),使用EDIGEST:
SELECT * FROM [。] WHERE EDIGEST = DIGEST_B64_STRING
但是在查询时,结果摘要是AAAAAAAAAAAAAAAAAAAAAAAAAAA=
,我不知道为什么会这样。