nishanthg92

nishanthg92

How do i use `arrayFilters` in mongoDB with phoenix elixir project?

I have a collection like below.

"userId" : ObjectId("5c666338421aa9791982f367")
"attendance" : [
		{
			"attendanceTakenAt" : "2019-02-19T06:26:25.423000Z",
			"day" : 19,
			"hour" : 6,
			"minute" : 26,
			"month" : 2,
			"morningAttendance" : true,
			"period" : "morning",
			"seconds" : 25,
			"year" : 2019
		},
		{
			"afternoonAttendance" : true,
			"attendanceTakenAt" : "2019-02-19T07:00:31.019000Z",
			"day" : 19,
			"hour" : 7,
			"minute" : 0,
			"month" : 2,
			"period" : "afternoon",
			"seconds" : 31,
			"year" : 2019
		},
		{
			"afternoonAttendance" : false,
			"attendanceTakenAt" : "2019-02-19T09:09:04.960000Z",
			"day" : 20,
			"hour" : 9,
			"minute" : 9,
			"month" : 2,
			"period" : "afternoon",
			"seconds" : 4,
			"year" : 2019
		},
		{
			"attendanceTakenAt" : "2019-03-01T06:24:41.474000Z",
			"day" : 1,
			"hour" : 6,
			"minute" : 24,
			"month" : 3,
			"morningAttendance" : true,
			"period" : "morning",
			"seconds" : 41,
			"year" : 2019
		},
		{
			"afternoonAttendance" : true,
			"attendanceTakenAt" : "2019-03-01T06:52:53.447000Z",
			"day" : 1,
			"hour" : 6,
			"minute" : 52,
			"month" : 3,
			"period" : "afternoon",
			"seconds" : 53,
			"year" : 2019
		},
		{
			"afternoonAttendance" : true,
			"attendanceTakenAt" : "2019-03-07T06:58:04.483000Z",
			"day" : 7,
			"hour" : 6,
			"minute" : 58,
			"month" : 3,
			"period" : "afternoon",
			"seconds" : 4,
			"year" : 2019
		}
	]

Now i need to update "afternoonAttendance": false for "attendance.day": 7. I tried using arrayFilters like below in mongo.

db.student_database.update({userId: ObjectId("5c666338421aa9791982f367"), rollNumber: "100"}, { $set: { "attendance.$[elem].afternoonAttendance" : false } }, {multi: true, arrayFilters: [ {"elem.day": 7, "elem.month": 3, "elem.year": 2019, "elem.period": "afternoon"} ] })

Above query works fine in MongoDB interface. but, I am not gettiing to use this query in phoenix elixir project. I am trying like below in elixir project.

filter = %{
          "userId" => ObjectId("5c666338421aa9791982f367"),
          "rollNumber" => "100"
        }

update = %{
          "$set" => %{
            "attendance.$[elem].afternoonAttendance" => false
          }
        }

options = %{
          "arrayFilters" => [%{ "elem.day" => 7, "elem.month" => 3, "elem.year" => 2019, "elem.period" => "afternoon" }]
        }

Mongo.update_many(:mongo, "db_collection", filter, update, options)

Which is getting error. Please help me how to update in elixir project.

First Post!

Ankhers

Ankhers

Can you post the error that you are getting?

From a quick glance your options variable is a map. If you look at the documentation for update_many/5, the options are meant to be a keyword list. But without seeing the error you are getting, it is impossible for me to know if this was the issue you are bumping up against.

Where Next?

Popular in Questions Top

aadeshere1
I have a another noob question about loop. Since elixir is immutable, while loop is not directly possible. total = 10 while total != 0 ...
New
marius95
Hello everyone, I try to use an Javascript Event Handler in my root.html.leex file. Therefore I created a function in the app.js file: ...
New
gshaw
What is the idiomatic way of matching for not nil in Elixir? E.g., First way: defp halt_if_not_signed_in(conn, signed_in_account) when...
New
tduccuong
Hi, is there any work on GUI with Elixir, that is similar to Electron/Javascript? My idea is to bundle Phoenix and BEAM into a single se...
New
minhajuddin
I have seen a lot of code which picks the first element from a list using Enum.at(0) instead of List.first. Is there a reason why people ...
New
shahryarjb
Hello, I get Persian date from my client and convert it to normal calendar like this: def jalali_string_to_miladi_english_number(persi...
New
ycv005
I have followed this StackOverflow post to install the specific version of Erlang. And When I am running mix ecto.setup then getting fol...
New
freewebwithme
Using vs code and installed ElixirLS: support and debugger. And I got an error popped up on start up says Failed to run ‘elixir’ comma...
New
chensan
I have a User schema with a :from_id field set to type :string: defmodule TweetBot.Repo.Migrations.CreateUsers do use Ecto.Migration ...
New
romenigld
I am trying to run a deploy with docker and I successfully runned with this command: docker build -t romenigld/blog-prod . but when I t...
New

Other popular topics Top

sorentwo
Hello! tl;dr Announcing Oban, an Ecto based job processing library with a focus on reliability and historical observability. After spen...
985 42920 311
New
gshaw
What is the idiomatic way of matching for not nil in Elixir? E.g., First way: defp halt_if_not_signed_in(conn, signed_in_account) when...
New
Patoshizzle
After calling mix ecto.create I get this error: 17:00:32.162 [error] GenServer #PID<0.412.0> terminating ** (Postgrex.Error) FATAL...
New
JorisKok
I have a server on AWS, and was running a load test using artillery. When looking at the Phoenix dashboard I see the Ports going to 100% ...
New
pmjoe
I have a relationship of love and hate with Elixir. Lots of things are just absolutely right, but there are some things that are kind of ...
New
aalberti333
As the title describes, I’m trying to run Enum.map() over a list of key/value pairs, where the value is a map. My data looks like this: ...
New
KronicDeth
Elixir plugin for JetBrain’s IntelliJ Platform (including Rubymine) This is a plugin that adds support for Elixir to JetBrains IntelliJ...
289 36128 110
New
rms.mrcs
Hi, I need to transform a list of numbers into a map where the keys are the indexes and the values are the original values of the list. ...
New
AstonJ
We’ve put together this wiki for Phoenix LiveView - please feel free to add any info you feel is worth including. What is Phoenix LiveV...
New
vonH
In asking this question I am more interested about the expressiveness of the language itself and less concerned about the availability of...
New

We're in Beta

About us Mission Statement