[英]Is it possible to filter a DynamoDB query result in python?
我的数据格式如下所示
{
ID:'some uuid'
Email:'some@email.com',
Tags=[tag1,tag2,tag3...],
Content:' some content'
}
分区键是 ID,排序键是电子邮件 如果我只想通过电子邮件查询,我创建了电子邮件的二级索引“email_index”,现在我想通过电子邮件和特定标签查询数据 例如我想要要查找 Email='some@email.com' 和 Tags 包含 'tag2' 的所有数据,我想先通过“email_index”查询
result=table.query(
IndexName='EmailIndex',
KeyConditionExpression='Email=:email',
ExpressionAttributeValues={
':email':'some@email.com'
}
)['Items']
然后用Attr('Tags').contains('tag2')
扫描结果 那么是否有可能同时进行? 或者我必须编写一个循环来过滤 Python 中的查询结果?
标签可能是 DynamoDB 的一个棘手用例。
一种选择是在查询操作中使用FilterExpression
result=table.query(
IndexName='EmailIndex',
KeyConditionExpression='Email=:email',
FilterExpression: 'contains(Tags, :tag)',
ExpressionAttributeValues={
':email':'some@email.com',
':tag': 'tag1'
}
)['Items']
正如您所概述的,另一种选择是检查您的应用程序代码。
如果这对于您的用例来说不够灵活,您可能需要研究更强大的搜索解决方案,如 Elasticsearch。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.