如何使用 aql 对 Aerospike 中特定 bin 中的所有列表进行排序?
How to sort all lists in a specific bin in Aerospike using aql?
我对 Aerospike 中的有序列表有一些疑问:
如何使用 aql 在数据库中查看列表是否有序?
有序列表是否表示已排序?
我想扫描数据库并更改所有列表(在特定的 bin 中)以进行排序。我想做的是使用 set_type,但我似乎无法让它工作。那可能吗?我该怎么做?
谢谢
我认为 AQL 不是充分利用列表功能的正确工具。也许它还没有更新到列表的全部功能。它建立在 C 客户端之上。至少我检查过的 AQL 版本 3.15.2.1 不是。您可能想要编写一个 java 客户端应用程序。
我在此处发布您交叉发布的问题的答案 https://discuss.aerospike.com/t/list-oprations/5282:
您可以使用 ScanPolicy.includeBinData=false
扫描命名空间,对于您返回的每个记录摘要,使用 operate()
将以下操作包装到单个事务中:
ListOperation.setOrder()
to ListOrder.ORDERED
ListOperation.sort()
with a ListSortFlags.DROP_DUPLICATES
您只需要运行这一次来清理您的数据库。
订购类型将适用于所有未来的操作。您只需继续使用 ListWriteFlags.ADD_UNIQUE
列表策略即可。
这是针对 Java 客户端的,但所有其他客户端都包含这些操作和策略。
我对 Aerospike 中的有序列表有一些疑问:
如何使用 aql 在数据库中查看列表是否有序?
有序列表是否表示已排序?
我想扫描数据库并更改所有列表(在特定的 bin 中)以进行排序。我想做的是使用 set_type,但我似乎无法让它工作。那可能吗?我该怎么做?
谢谢
我认为 AQL 不是充分利用列表功能的正确工具。也许它还没有更新到列表的全部功能。它建立在 C 客户端之上。至少我检查过的 AQL 版本 3.15.2.1 不是。您可能想要编写一个 java 客户端应用程序。
我在此处发布您交叉发布的问题的答案 https://discuss.aerospike.com/t/list-oprations/5282:
您可以使用 ScanPolicy.includeBinData=false
扫描命名空间,对于您返回的每个记录摘要,使用 operate()
将以下操作包装到单个事务中:
ListOperation.setOrder()
toListOrder.ORDERED
ListOperation.sort()
with aListSortFlags.DROP_DUPLICATES
您只需要运行这一次来清理您的数据库。
订购类型将适用于所有未来的操作。您只需继续使用 ListWriteFlags.ADD_UNIQUE
列表策略即可。
这是针对 Java 客户端的,但所有其他客户端都包含这些操作和策略。