Допустим, у меня есть схема документа, подобная следующей:
{
users: [{userid: 123, username: "foo"}, {userid: 234, username: "bar"}]
}
Я хочу добавить элемент к users
с именем пользователя, равным "неунифицированной" версии данного имени пользователя. Например, если я попытаюсь добавить {userid: 456, username: "baz"}
в список пользователей выше, это будет успешным, но если я попытаюсь добавить {userid: 456, username: "foo"}
к вышеупомянутому, то вместо этого следует добавить {userid: 456, username: "foo (1)"}
.
Есть ли способ сделать это с помощью обновления atomi c в RethinkDB? Это детерминированная операция c, поэтому теоретически это должно быть возможно, верно? Если нет, есть ли какой-нибудь способ, которым я могу хотя бы обнаружить конфликт имени пользователя во время вставки и просто отклонить обновление?
Я знаю, что могу использовать подзапросы, но похоже, что результатом будет не операция атома c? Все примеры подзапросов, которые я видел в документации, показывают подзапросы в отдельной таблице.