Java 如何在dynamodb中应用列表类型字段中的搜索?

Java 如何在dynamodb中应用列表类型字段中的搜索?,java,spring-data,amazon-dynamodb,Java,Spring Data,Amazon Dynamodb,我们在mongodb存储库中使用$all,如下所示: @Query(value = "{ 'subscriptions' : {$all : ?0 }}") public List<ContentItem> findBySubscription(String[] subscriptionCode); @Query(value=“{'subscriptions':{$all:?0}”) 公共列表findBySubscription(字符串[]subscriptionCode);

我们在mongodb存储库中使用$all,如下所示:

@Query(value = "{ 'subscriptions' : {$all : ?0 }}")

public List<ContentItem> findBySubscription(String[] subscriptionCode);
@Query(value=“{'subscriptions':{$all:?0}”)
公共列表findBySubscription(字符串[]subscriptionCode);

它适用于mongo,但我们需要在dynamodb中使用它的替代方案,下面的解决方案使用AWS SDK dynamodb。目前,我认为只有社区版的Spring数据可用于DynamoDB。因此,我使用AWS SDK提供了解决方案

比较运算符可用于搜索列表数据类型中的值

列表支持包含:计算“a包含b”时,“a” 可以是一个列表;但是,“b”不能是集合、映射或列表

示例:-

QuerySpec querySpec = new QuerySpec();
querySpec.withKeyConditionExpression("yearkey = :yearval and title = :title")
                .withFilterExpression("contains (subscriptions, :subscriptions)")
                .withValueMap(
                        new ValueMap().withNumber(":yearval", yearKey)
                        .withString(":title", title) 
                        .withString(":subscriptions", subscriptions));
编辑:-

QuerySpec querySpec = new QuerySpec();
querySpec.withKeyConditionExpression("yearkey = :yearval and title = :title")
                .withFilterExpression("contains (subscriptions, :subscriptions)")
                .withValueMap(
                        new ValueMap().withNumber(":yearval", yearKey)
                        .withString(":title", title) 
                        .withString(":subscriptions", subscriptions));
目前,第二个参数不能是list,因为API不能按照规范处理它。解决方法是将条件与多个包含一起使用。示例如下:-

.withFilterExpression("contains (subscriptions, :subscriptions1) AND contains (subscriptions, :subscriptions2)")

在我的情况下,b也是一个列表。我需要找到$all MongoDb的替代品。请提出建议。谢谢@onceptquest如果答案有帮助,请接受好吗?