0
我们使用$所有MongoDB中存储库象下面这样:如何在dynamodb的列表类型字段中应用搜索?
@Query(value = "{ 'subscriptions' : {$all : ?0 }}")
public List<ContentItem> findBySubscription(String[] subscriptionCode);
它的工作好蒙戈,但我们需要在dynamodb
我们使用$所有MongoDB中存储库象下面这样:如何在dynamodb的列表类型字段中应用搜索?
@Query(value = "{ 'subscriptions' : {$all : ?0 }}")
public List<ContentItem> findBySubscription(String[] subscriptionCode);
它的工作好蒙戈,但我们需要在dynamodb
以下解决方案使用AWS SDK DynamoDB其替代。目前,我认为DynamoDB只有社区版本的Spring数据可用。因此,我提供了使用AWS SDK的解决方案。
的CONTAINS
比较运算符可以用来搜索在LIST数据类型的值。
CONTAINS的支持列表:在评价 “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));
编辑: -
目前,第二参数不能为列表,因为API不能处理它按照本说明书。解决方法是使用和条件与多个CONTAINS。下面的例子: -
.withFilterExpression("contains (subscriptions, :subscriptions1) AND contains (subscriptions, :subscriptions2)")
在我的情况b也将是一个列表。我需要找到所有MongoDb的替代品。请建议。 –
用解决方法更新了我的答案。 – notionquest
感谢@notionquest –