[英]Query dynamodb based on bool value
我有以下按預期工作的查詢:
var request = new QueryRequest {
TableName = aTableName,
KeyConditionExpression = "Username = :v_Username",
ExpressionAttributeValues = new Dictionary<string, AttributeValue> {
{
":v_Username", new AttributeValue { S = "admin@admin.com" }}}
};
var response = await _client.QueryAsync(request);
我的表中有一列名為 IsAdmin 的布爾值。 當我嘗試對 IsAdmin = true 的所有行執行相同的查詢時,我沒有得到任何結果。
var request = new QueryRequest {
TableName = aTableName,
KeyConditionExpression = "IsAdmin = :v_IsAdmin",
ExpressionAttributeValues = new Dictionary<string, AttributeValue> {
{
":v_IsAdmin", new AttributeValue { BOOL = true }}}
};
var response = await _client.QueryAsync(request);
我不明白為什么這行不通?
您不能對不是分區鍵的屬性執行查詢。
通常您會創建一個 GSI 以允許您查詢不是鍵的屬性,但在您的情況下,不允許將 bool 作為分區鍵:
您需要在當前場景中Scan
表並使用 FilterExpression,這將導致讀取表中的每個項目,效率低下且不可擴展。
我能給出的最佳建議是對isAdmin
使用字符串值。 只有在為真時才為其設置一個值。 在isAdmin
上創建一個 GSI,這將為您提供一個僅包含管理員人員的稀疏索引。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.