DynamoDB: не начинается с - PullRequest
0 голосов
/ 29 апреля 2019

Я пытаюсь выполнить запрос DynamoDB, который говорит, что я хочу элементы, которые не начинаются с определенного значения. Я не могу найти способ сделать это.

Я попробовал следующие 4 способа оценки, и ни один из них не работает. Каждый из них дает мне недопустимую ошибку оператора.

My KeyConditionExpression , которые я пробовал, выглядят так:

!begins_with(gameScoreId, :scoreScore) AND !begins_with(gameScoreId, :scoreLevel) AND userId = :userId

<>begins_with(gameScoreId, :scoreScore) AND <>begins_with(gameScoreId, :scoreLevel) AND userId = :userId

NOT begins_with(gameScoreId, :scoreScore) AND NOT begins_with(gameScoreId, :scoreLevel) AND userId = :userId

begins_with(gameScoreId, :scoreScore) = false AND begins_with(gameScoreId, :scoreLevel) = false AND userId = :userId

Если я удаляю операторы not, я получаю эту ошибку:

KeyConditionExpressions должно содержать только одно условие на ключ

Есть ли способ сделать это в DynamodB?

1 Ответ

0 голосов
/ 30 апреля 2019

Похоже, выражение условия ключа не поддерживает NOT begins_with(x).Это может быть связано с тем, что результирующий набор не является смежным (это элементы до x, агрегированные с элементами после x).

Некоторые возможные решения:

  1. сделатьgameScoreId неключевой атрибут (или репликация его в новый неключевой атрибут), затем вы можете запросить на userId и отфильтровать на gameScoreId (вы не можете отфильтровать по ключевым атрибутам), или
  2. сканировать таблицу, в этом случае вы можете применить выражение фильтра, которое хотите использовать (очевидно, у вас будут проблемы с производительностью при работе с очень большими таблицами)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...