所以我在dynamodb一個數據庫中的一些項目,它看起來有點像這樣,其中name是主鍵列表解析在boto3爲Dynamodb
'name': {'S': 'bob'},
'users': {'L': [
{'M': {
'user_id': {'S': 'xxx'},
'share': {'N': '1'}}},
{'M': {
'user_id': {'S': 'yyy'},
'share': {'N': '4'}}}]}
現在我的問題是,用戶是字典列表,並且我想知道是否有任何方法可以掃描該表以獲取name
,當該用戶列表中存在特定的user_id
時。
我知道在Python我會做一個列表理解,只是得到一個user_id
的列表,然後只是做一個user_id in [user['user_id'] for user in users]
這將是測試,但我不知道如何在DynamoDB中做到這一點掃描FilterExpression
。
我只是試圖避免需要對項目看起來像這樣:
'name': {'S': 'bob'},
'users': {'L': [
{'M': {
'user_id': {'S': 'xxx'},
'share': {'N': '1'}}},
{'M': {
'user_id': {'S': 'yyy'},
'share': {'N': '4'}}}]}
'user_ids': {'L': [
{'S': 'xxx'},
{'S': 'yyy'}]}
,因爲這感覺就像一個所謂的「代碼味道」。但是,這將解決問題,因爲過濾器表達式只是:user_id in user_ids
有沒有辦法做到這一點,如果我沒有'share'價值?還要感謝IN操作員的注意事項。沒意識到! –
不幸的是,沒辦法。 – notionquest
嗯,好的,謝謝! @notionquest –