首页 > 解决方案 > 如何使用 Python 查询 DynamoDB 中列表字段中的项目?

问题描述

我有一个表,其中包含具有以下属性的项目:

{
  "country": "USA",
  "names": [
    "josh",
    "freddy"
  ],
  "phoneNumber": "123",
  "userID": 0
}

我正在尝试通过使用 python 查找名称来查询 DynameDB 中的项目。所以我会在我的代码中写下我需要的项目"freddy"在字段中"names"

我看到很多论坛都提到"contains"但没有一个显示一个例子......

我当前的代码如下:

dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('users_table')
data = table.query(
    FilterExpression: 'names = :name',
    ExpressionAttributeValues: {
      ":name": "freddy"
    }
)

我显然不能使用它,因为"names"它是一个列表而不是一个字符串字段。我怎样才能"freddy"在里面找names

标签: pythonlistamazon-dynamodb

解决方案


由于names字段不是主键的一部分,因此您不能使用query. 查找项目的唯一方法names是使用scan.

import boto3
from boto3.dynamodb.conditions import Key, Attr

dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('users_table')
data = table.scan(
    FilterExpression=Attr('names').contains('freddy')
)

推荐阅读