Skip to content

How to query on embed field? #104

Open
@AlexKovalevych

Description

@AlexKovalevych

Having such schema:

# ProjectUser module

schema "project_users" do
    belongs_to :project, Project

    embeds_many :stats, ProjectUserStat, on_replace: :delete
end
# ProjectUserStat module

  embedded_schema do
    field :date, :string
  end

Tried

      ProjectUser
      |> where([pu], pu.project_id in ^project_ids)
      |> where([pu], pu.stats.date >= ^from)

doesnt work:

** (Ecto.Query.CompileError) `pu.stats().date()` is not a valid query expression

tried with fragments:

      ProjectUser
      |> where([pu], pu.project_id in ^project_ids)
      |> where([pu], fragment("stats.date": ["$gte": ^from, "$lte": ^to]))

doesnt work:

[["stats.date": ["$gte": #BSON.ObjectId<5874d284958c27e7ccd906c3>, "$lte": #BSON.ObjectId<5874d284958c27e7ccd906c4>]]

Instead of having strings it converts them to ObjectIds. I'm using ecto 2.0 with this fork #91, so this might be related to that version only, anyway, any ideas?

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions