【问题标题】:Aerospike AQL Query Against List of ValuesAerospike AQL 查询值列表
【发布时间】:2017-08-28 17:28:45
【问题描述】:

在 AQL 中我可以做到

select * from ns.set where PK='some val'

如何查询值列表?类似的东西

select * from ns.set where PK in ('val1', 'val2'...)

当尝试运行上面的代码时,我得到“不支持的命令格式”

【问题讨论】:

标签: aerospike aql


【解决方案1】:

在 AQL 中不支持。

Aerospike 客户端(您将在生产中使用)支持此功能。它称为批量索引读取。 http://www.aerospike.com/docs/guide/batch.html

【讨论】:

  • 这对于读操作很有用。我没有将它包含在原始问题中,但我真正想做的是对匹配查询的结果执行读写 UDF。
  • 您不能使用 AQL 对二级索引查询产生的记录集进行写入 - 您可以通过 Stream UDF(AQLs AGGREGATE 语句)进行读取/聚合。流 udf 以只读模式运行。记录 udfs 在读/写模式下运行。您可以在单个记录或命名空间中的所有记录上运行记录 udf(AQL 的 EXECUTE 语句)。[设置,可选]。这是在整个集合上运行记录 UDF 的示例 - 也称为在扫描上运行 UDF - discuss.aerospike.com/t/how-to-delete-a-single-bin-from-set/…
  • 对,在这种情况下,是否可以在 udf 本身中过滤我的列表?
  • 我不听你的问题。你能说得更具体点吗?在哪种情况下,过滤一下……举个例子。 Aerospike 对读取或写入有记录级别的锁定。所以你一次只能对一条记录做一件事——除非你使用 Operate()——你可以在同一个锁中修改和读回一条记录。对于只读,服务器将接受您的一组记录键并将您可以在客户端使用的结果发回给您。扫描和二级索引查询与批量索引读取的结果存在细微差别。
  • 我指的是读写操作。我只想对我的集合中的一些记录执行 udf,这些记录在列表中预先定义(因此我的原始问题)。我可以在 udf 本身而不是在执行语句本身中检查记录是否对我的 udf 有效。因此,如果我知道我想接触的记录的 PK,我是否可以在 UDF 本身中过滤此列表,并在这种情况下将 UDF 应用于所有记录?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-18
  • 2021-05-24
相关资源
最近更新 更多