Как использовать функцию запроса DynamoDB для сложного объекта? [Дубликат]

попытайтесь понять следующее поведение:

    var input = "0014.2";

Regex r1 = new Regex("\\d+.{0,1}\\d+");
Regex r2 = new Regex("\\d*.{0,1}\\d*");

Console.WriteLine(r1.Match(input).Value); // "0014.2"
Console.WriteLine(r2.Match(input).Value); // "0014.2"

input = " 0014.2";

Console.WriteLine(r1.Match(input).Value); // "0014.2"
Console.WriteLine(r2.Match(input).Value); // " 0014"

input = "  0014.2";

Console.WriteLine(r1.Match(input).Value); // "0014.2"
Console.WriteLine(r2.Match(input).Value); // ""
28
задан Ali 16 October 2012 в 19:12
поделиться

1 ответ

Краткий ответ: Нет.

DynamoDB - это хранилище ключей:. Он очень хорош в быстром извлечении / сохранении элементов, потому что он выполняет несколько компромиссов. Это ограничение, с которым вы должны справиться.

Nonethess, в зависимости от вашей реальной модели, может быть хорошей идеей использовать это поле в качестве hash_key или использовать range_key

Если это невозможно, я советую вам де-нормализовать ваши данные. В настоящее время у вас есть что-то вроде:

UserTable

  • hash_key: user_id
  • e-mail
  • ...

Чтобы обеспечить однозначность, добавьте новую таблицу с этой схемой:

EmailUser

  • hash_key: e-mail
  • user_id

Чтобы убедиться, что электронное письмо уникально, перед отправкой еще раз отправьте GetItem на EmailUser.

Этот тип де-нормализации довольно распространен с базами данных без SQL.

25
ответ дан yadutaf 24 August 2018 в 21:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: