У меня есть следующий запрос в моем конвейере:
where([e], fragment("?->>? = ?", e.fields, ^field_name, ^field_value))
e в данном случае означает event. Что делает первый параметр вызова метода фрагмента?
e
event
Первый параметр вызова Ecto.Query.API.fragment/1 - это шаблон фрагмента для отправки в базу данных.
Ecto.Query.API.fragment/1
Здесь это функция Postgres для извлечения поля объекта JSON в виде текста . Тем не менее,
fragment("?->>? = ?", e.fields, ^field_name, ^field_value)
буквально означает «где вложенное поле с именем field_name в поле JSONB имеет значение, равное field_value».
field_name
field_value