попытайтесь понять следующее поведение:
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); // ""
Краткий ответ: Нет.
DynamoDB - это хранилище ключей:. Он очень хорош в быстром извлечении / сохранении элементов, потому что он выполняет несколько компромиссов. Это ограничение, с которым вы должны справиться.
Nonethess, в зависимости от вашей реальной модели, может быть хорошей идеей использовать это поле в качестве hash_key
или использовать range_key
Если это невозможно, я советую вам де-нормализовать ваши данные. В настоящее время у вас есть что-то вроде:
UserTable
hash_key
: user_id
e-mail
Чтобы обеспечить однозначность, добавьте новую таблицу с этой схемой:
EmailUser
hash_key
: e-mail user_id
Чтобы убедиться, что электронное письмо уникально, перед отправкой еще раз отправьте GetItem
на EmailUser
.
Этот тип де-нормализации довольно распространен с базами данных без SQL.