Получить все первичные ключи с помощью Ecto?

#elixir #ecto

Вопрос:

Я хочу извлечь все первичные ключи из таблицы, но я не хочу извлекать какие-либо другие поля из базы данных. То, что я нашел до сих пор, — это рекомендации по использованию Repo.all , Map.take но это явно слишком много извлекает из базы данных.

Как мне извлечь одно поле из всех записей в схеме ecto?

Ответ №1:

Ecto.Query.select/3 это твой друг.

 from u in User, select: u.id
 

Чтобы получить несколько полей, используйте

 from u in User, select: {u.id, u.name}
 

Комментарии:

1. module.__schema__(:primary_key) также может быть полезно 🙂

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

3. @Hauleth Я подумал об этом и решил, что это показывает расширяемость для возврата 2 полей. Хотя я могу и ошибаться.

4. @AlekseiMatiushkin почему бы не иметь два фрагмента кода? один отвечает на точный вопрос, а другой предлагает очень вероятное продолжение?

5. @FilipHaglund пожалуйста, не стесняйтесь редактировать мой ответ, как вы сочтете его более подходящим.