├── .gitignore
├── Assignment 4.pdf
├── CSC424 - Week 5 Lab - Warm Up.pdf
├── Databases
├── MongoDB
│ ├── catalog.books.json
│ ├── city_inspections.json
│ ├── companies.json
│ ├── countries.json
│ ├── country.json
│ ├── covers.json
│ ├── grades.json
│ ├── palbum.zip
│ ├── people-bson.zip
│ ├── persons.json
│ ├── products.json
│ ├── profiles.json
│ ├── restaurant.json
│ ├── students.json
│ ├── tv-shows.json
│ ├── tweets.zip
│ └── users.json
└── PostgreSQL
│ └── dvdrental.tar
├── LICENSE
├── Lecture 11 - MongoDB security.pdf
├── Lecture 2 - Python Part 2.pdf
├── Lecture 3 - Introducing Psycopg, and CRUD using Psycopg.pdf
├── Lecture 4- Introduction NOSQL, and MongoDB.pdf
├── Lecture 5 - CRUD operations in MongoDB.pdf
├── Lecture 6 - MongoDB Performance, Fault tolerance, and deployment Part1.pdf
├── Lecture 8 - How to structure documents (schemas, and relations).pdf
├── Lecture 9 - Introducing PyMongo, and CRUD using PyMongo.pdf
├── Mid-term review.pdf
├── Python Warm Up - Lab Exercises.pdf
├── README.md
├── week10
├── Anaconda-setup.md
├── post.py
├── post
│ ├── __init__.py
│ ├── article.py
│ ├── post.py
│ └── pymongo-1.5.py
├── pymongo-1.1.py
├── pymongo-1.2.py
├── pymongo-1.3.py
├── pymongo-1.4.py
└── pymongo-1.5.py
├── week11
├── security1.1
├── security1.2
├── security1.3
├── security1.4
├── security1.5
└── security1.6
├── week2
├── arguments-part1.1.py
├── arguments-part1.2.py
├── arguments-part1.3.py
├── arguments-part1.4.py
├── class-part-1.1.py
├── class-part-1.2.py
├── class-part-1.3.py
├── conditions-part1.1.py
├── conditions-part1.2.py
├── conditions-part1.3.py
├── dictionary-part1.1.py
├── dictionary-part1.2.py
├── dictionary-part1.3.py
├── dictionary-part1.4.py
├── list-loop-part1.1.py
├── list-loop-part1.2.py
├── list-loop-part1.3.py
└── module-part1.1
│ ├── customer.py
│ └── modules-part1.1.py
├── week3
├── psycopg2-part1.1.py
├── psycopg2-part1.2.py
├── psycopg2-part1.py
├── psycopg2-part2.py
├── psycopg2-part3.py
├── psycopg2-suppliers-create.py
├── psycopg2-suppliers-delete.py
├── psycopg2-suppliers-insert-manny-rows.py
├── psycopg2-suppliers-insert-one-row.py
├── psycopg2-suppliers-transaction.py
├── psycopg2-suppliers-update.py
└── restore-databse.txt
├── week4
├── json-part1.1.py
└── mongodb-part1.txt
├── week5
├── mongodb-part1.txt
├── mongodb-part10.txt
├── mongodb-part11.txt
├── mongodb-part12.txt
├── mongodb-part13.txt
├── mongodb-part14.txt
├── mongodb-part15.txt
├── mongodb-part16.txt
├── mongodb-part17.txt
├── mongodb-part18.txt
├── mongodb-part19.txt
├── mongodb-part2.txt
├── mongodb-part20.txt
├── mongodb-part21.txt
├── mongodb-part22.txt
├── mongodb-part23.txt
├── mongodb-part24.txt
├── mongodb-part25.txt
├── mongodb-part26.txt
├── mongodb-part27.txt
├── mongodb-part28.txt
├── mongodb-part29.txt
├── mongodb-part3.txt
├── mongodb-part30.txt
├── mongodb-part31.txt
├── mongodb-part32.txt
├── mongodb-part33.txt
├── mongodb-part34.txt
├── mongodb-part36.txt
├── mongodb-part4.txt
├── mongodb-part5.txt
├── mongodb-part6.txt
├── mongodb-part7.txt
├── mongodb-part8.txt
├── mongodb-part9.txt
└── tv-shows.json
├── week6
├── index-part1.1
├── index-part1.10
├── index-part1.11
├── index-part1.12
├── index-part1.2
├── index-part1.3
├── index-part1.4
├── index-part1.5
├── index-part1.6
├── index-part1.7
├── index-part1.8
├── index-part1.9
└── persons.json
├── week7
├── index-part1.1
└── index-part1.2
└── week9
└── schemas1.1
/.gitignore:
--------------------------------------------------------------------------------
1 | # Byte-compiled / optimized / DLL files
2 | __pycache__/
3 | *.py[cod]
4 | *$py.class
5 |
6 | # C extensions
7 | *.so
8 |
9 | # Distribution / packaging
10 | .Python
11 | build/
12 | develop-eggs/
13 | dist/
14 | downloads/
15 | eggs/
16 | .eggs/
17 | lib/
18 | lib64/
19 | parts/
20 | sdist/
21 | var/
22 | wheels/
23 | *.egg-info/
24 | .installed.cfg
25 | *.egg
26 | MANIFEST
27 |
28 | # PyInstaller
29 | # Usually these files are written by a python script from a template
30 | # before PyInstaller builds the exe, so as to inject date/other infos into it.
31 | *.manifest
32 | *.spec
33 |
34 | # Installer logs
35 | pip-log.txt
36 | pip-delete-this-directory.txt
37 |
38 | # Unit test / coverage reports
39 | htmlcov/
40 | .tox/
41 | .coverage
42 | .coverage.*
43 | .cache
44 | nosetests.xml
45 | coverage.xml
46 | *.cover
47 | .hypothesis/
48 | .pytest_cache/
49 |
50 | # Translations
51 | *.mo
52 | *.pot
53 |
54 | # Django stuff:
55 | *.log
56 | local_settings.py
57 | db.sqlite3
58 |
59 | # Flask stuff:
60 | instance/
61 | .webassets-cache
62 |
63 | # Scrapy stuff:
64 | .scrapy
65 |
66 | # Sphinx documentation
67 | docs/_build/
68 |
69 | # PyBuilder
70 | target/
71 |
72 | # Jupyter Notebook
73 | .ipynb_checkpoints
74 |
75 | # pyenv
76 | .python-version
77 |
78 | # celery beat schedule file
79 | celerybeat-schedule
80 |
81 | # SageMath parsed files
82 | *.sage.py
83 |
84 | # Environments
85 | .env
86 | .venv
87 | env/
88 | venv/
89 | ENV/
90 | env.bak/
91 | venv.bak/
92 |
93 | # Spyder project settings
94 | .spyderproject
95 | .spyproject
96 |
97 | # Rope project settings
98 | .ropeproject
99 |
100 | # mkdocs documentation
101 | /site
102 |
103 | # mypy
104 | .mypy_cache/
105 |
--------------------------------------------------------------------------------
/Assignment 4.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sureshmelvinsigera/CSC-424-Advanced-Database-Management-Systems/f695db4548229398f9fe96022c8bfb4c8e9664bf/Assignment 4.pdf
--------------------------------------------------------------------------------
/CSC424 - Week 5 Lab - Warm Up.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sureshmelvinsigera/CSC-424-Advanced-Database-Management-Systems/f695db4548229398f9fe96022c8bfb4c8e9664bf/CSC424 - Week 5 Lab - Warm Up.pdf
--------------------------------------------------------------------------------
/Databases/MongoDB/palbum.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sureshmelvinsigera/CSC-424-Advanced-Database-Management-Systems/f695db4548229398f9fe96022c8bfb4c8e9664bf/Databases/MongoDB/palbum.zip
--------------------------------------------------------------------------------
/Databases/MongoDB/people-bson.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sureshmelvinsigera/CSC-424-Advanced-Database-Management-Systems/f695db4548229398f9fe96022c8bfb4c8e9664bf/Databases/MongoDB/people-bson.zip
--------------------------------------------------------------------------------
/Databases/MongoDB/products.json:
--------------------------------------------------------------------------------
1 | {
2 | "_id": "ac3",
3 | "name": "AC3 Phone",
4 | "brand": "ACME",
5 | "type": "phone",
6 | "price": 200,
7 | "warranty_years": 1,
8 | "available": true
9 | }
10 | {
11 | "_id": "ac7",
12 | "name": "AC7 Phone",
13 | "brand": "ACME",
14 | "type": "phone",
15 | "price": 320,
16 | "warranty_years": 1,
17 | "available": false
18 | }
19 | {
20 | "_id": {
21 | "$oid": "507d95d5719dbef170f15bf9"
22 | },
23 | "name": "AC3 Series Charger",
24 | "type": [
25 | "accessory",
26 | "charger"
27 | ],
28 | "price": 19,
29 | "warranty_years": 0.25,
30 | "for": [
31 | "ac3",
32 | "ac7",
33 | "ac9"
34 | ]
35 | }
36 | {
37 | "_id": {
38 | "$oid": "507d95d5719dbef170f15bfa"
39 | },
40 | "name": "AC3 Case Green",
41 | "type": [
42 | "accessory",
43 | "case"
44 | ],
45 | "color": "green",
46 | "price": 12,
47 | "warranty_years": 0
48 | }
49 | {
50 | "_id": {
51 | "$oid": "507d95d5719dbef170f15bfb"
52 | },
53 | "name": "Phone Extended Warranty",
54 | "type": "warranty",
55 | "price": 38,
56 | "warranty_years": 2,
57 | "for": [
58 | "ac3",
59 | "ac7",
60 | "ac9",
61 | "qp7",
62 | "qp8",
63 | "qp9"
64 | ]
65 | }
66 | {
67 | "_id": {
68 | "$oid": "507d95d5719dbef170f15bfc"
69 | },
70 | "name": "AC3 Case Black",
71 | "type": [
72 | "accessory",
73 | "case"
74 | ],
75 | "color": "black",
76 | "price": 12.5,
77 | "warranty_years": 0.25,
78 | "available": false,
79 | "for": "ac3"
80 | }
81 | {
82 | "_id": {
83 | "$oid": "507d95d5719dbef170f15bfd"
84 | },
85 | "name": "AC3 Case Red",
86 | "type": [
87 | "accessory",
88 | "case"
89 | ],
90 | "color": "red",
91 | "price": 12,
92 | "warranty_years": 0.25,
93 | "available": true,
94 | "for": "ac3"
95 | }
96 | {
97 | "_id": {
98 | "$oid": "507d95d5719dbef170f15bfe"
99 | },
100 | "name": "Phone Service Basic Plan",
101 | "type": "service",
102 | "monthly_price": 40,
103 | "limits": {
104 | "voice": {
105 | "units": "minutes",
106 | "n": 400,
107 | "over_rate": 0.05
108 | },
109 | "data": {
110 | "units": "gigabytes",
111 | "n": 20,
112 | "over_rate": 1
113 | },
114 | "sms": {
115 | "units": "texts sent",
116 | "n": 100,
117 | "over_rate": 0.001
118 | }
119 | },
120 | "term_years": 2
121 | }
122 | {
123 | "_id": {
124 | "$oid": "507d95d5719dbef170f15bff"
125 | },
126 | "name": "Phone Service Core Plan",
127 | "type": "service",
128 | "monthly_price": 60,
129 | "limits": {
130 | "voice": {
131 | "units": "minutes",
132 | "n": 1000,
133 | "over_rate": 0.05
134 | },
135 | "data": {
136 | "n": "unlimited",
137 | "over_rate": 0
138 | },
139 | "sms": {
140 | "n": "unlimited",
141 | "over_rate": 0
142 | }
143 | },
144 | "term_years": 1
145 | }
146 | {
147 | "_id": {
148 | "$oid": "507d95d5719dbef170f15c00"
149 | },
150 | "name": "Phone Service Family Plan",
151 | "type": "service",
152 | "monthly_price": 90,
153 | "limits": {
154 | "voice": {
155 | "units": "minutes",
156 | "n": 1200,
157 | "over_rate": 0.05
158 | },
159 | "data": {
160 | "n": "unlimited",
161 | "over_rate": 0
162 | },
163 | "sms": {
164 | "n": "unlimited",
165 | "over_rate": 0
166 | }
167 | },
168 | "sales_tax": true,
169 | "term_years": 2
170 | }
171 | {
172 | "_id": {
173 | "$oid": "507d95d5719dbef170f15c01"
174 | },
175 | "name": "Cable TV Basic Service Package",
176 | "type": "tv",
177 | "monthly_price": 50,
178 | "term_years": 2,
179 | "cancel_penalty": 25,
180 | "sales_tax": true,
181 | "additional_tarriffs": [
182 | {
183 | "kind": "federal tarriff",
184 | "amount": {
185 | "percent_of_service": 0.06
186 | }
187 | },
188 | {
189 | "kind": "misc tarriff",
190 | "amount": 2.25
191 | }
192 | ]
193 | }
194 |
--------------------------------------------------------------------------------
/Databases/MongoDB/students.json:
--------------------------------------------------------------------------------
1 | {
2 | "_id": 0,
3 | "name": "aimee Zank",
4 | "scores": [
5 | {
6 | "score": 1.463179736705023,
7 | "type": "exam"
8 | },
9 | {
10 | "score": 11.78273309957772,
11 | "type": "quiz"
12 | },
13 | {
14 | "score": 35.8740349954354,
15 | "type": "homework"
16 | }
17 | ]
18 | }
19 | {
20 | "_id": 1,
21 | "name": "Aurelia Menendez",
22 | "scores": [
23 | {
24 | "score": 60.06045071030959,
25 | "type": "exam"
26 | },
27 | {
28 | "score": 52.79790691903873,
29 | "type": "quiz"
30 | },
31 | {
32 | "score": 71.76133439165544,
33 | "type": "homework"
34 | }
35 | ]
36 | }
37 | {
38 | "_id": 2,
39 | "name": "Corliss Zuk",
40 | "scores": [
41 | {
42 | "score": 67.03077096065002,
43 | "type": "exam"
44 | },
45 | {
46 | "score": 6.301851677835235,
47 | "type": "quiz"
48 | },
49 | {
50 | "score": 66.28344683278382,
51 | "type": "homework"
52 | }
53 | ]
54 | }
55 | {
56 | "_id": 3,
57 | "name": "Bao Ziglar",
58 | "scores": [
59 | {
60 | "score": 71.64343899778332,
61 | "type": "exam"
62 | },
63 | {
64 | "score": 24.80221293650313,
65 | "type": "quiz"
66 | },
67 | {
68 | "score": 42.26147058804812,
69 | "type": "homework"
70 | }
71 | ]
72 | }
73 | {
74 | "_id": 4,
75 | "name": "Zachary Langlais",
76 | "scores": [
77 | {
78 | "score": 78.68385091304332,
79 | "type": "exam"
80 | },
81 | {
82 | "score": 90.2963101368042,
83 | "type": "quiz"
84 | },
85 | {
86 | "score": 34.41620148042529,
87 | "type": "homework"
88 | }
89 | ]
90 | }
91 | {
92 | "_id": 5,
93 | "name": "Wilburn Spiess",
94 | "scores": [
95 | {
96 | "score": 44.87186330181261,
97 | "type": "exam"
98 | },
99 | {
100 | "score": 25.72395114668016,
101 | "type": "quiz"
102 | },
103 | {
104 | "score": 63.42288310628662,
105 | "type": "homework"
106 | }
107 | ]
108 | }
109 | {
110 | "_id": 6,
111 | "name": "Jenette Flanders",
112 | "scores": [
113 | {
114 | "score": 37.32285459166097,
115 | "type": "exam"
116 | },
117 | {
118 | "score": 28.32634976913737,
119 | "type": "quiz"
120 | },
121 | {
122 | "score": 81.57115318686338,
123 | "type": "homework"
124 | }
125 | ]
126 | }
127 | {
128 | "_id": 7,
129 | "name": "Salena Olmos",
130 | "scores": [
131 | {
132 | "score": 90.37826509157176,
133 | "type": "exam"
134 | },
135 | {
136 | "score": 42.48780666956811,
137 | "type": "quiz"
138 | },
139 | {
140 | "score": 96.52986171633331,
141 | "type": "homework"
142 | }
143 | ]
144 | }
145 | {
146 | "_id": 8,
147 | "name": "Daphne Zheng",
148 | "scores": [
149 | {
150 | "score": 22.13583712862635,
151 | "type": "exam"
152 | },
153 | {
154 | "score": 14.63969941335069,
155 | "type": "quiz"
156 | },
157 | {
158 | "score": 75.94123677556644,
159 | "type": "homework"
160 | }
161 | ]
162 | }
163 | {
164 | "_id": 9,
165 | "name": "Sanda Ryba",
166 | "scores": [
167 | {
168 | "score": 97.00509953654694,
169 | "type": "exam"
170 | },
171 | {
172 | "score": 97.80449632538915,
173 | "type": "quiz"
174 | },
175 | {
176 | "score": 25.27368532432955,
177 | "type": "homework"
178 | }
179 | ]
180 | }
181 | {
182 | "_id": 10,
183 | "name": "Denisha Cast",
184 | "scores": [
185 | {
186 | "score": 45.61876862259409,
187 | "type": "exam"
188 | },
189 | {
190 | "score": 98.35723209418343,
191 | "type": "quiz"
192 | },
193 | {
194 | "score": 55.90835657173456,
195 | "type": "homework"
196 | }
197 | ]
198 | }
199 | {
200 | "_id": 11,
201 | "name": "Marcus Blohm",
202 | "scores": [
203 | {
204 | "score": 78.42617835651868,
205 | "type": "exam"
206 | },
207 | {
208 | "score": 82.58372817930675,
209 | "type": "quiz"
210 | },
211 | {
212 | "score": 87.49924733328717,
213 | "type": "homework"
214 | }
215 | ]
216 | }
217 | {
218 | "_id": 12,
219 | "name": "Quincy Danaher",
220 | "scores": [
221 | {
222 | "score": 54.29841278520669,
223 | "type": "exam"
224 | },
225 | {
226 | "score": 85.61270164694737,
227 | "type": "quiz"
228 | },
229 | {
230 | "score": 80.40732356118075,
231 | "type": "homework"
232 | }
233 | ]
234 | }
235 | {
236 | "_id": 13,
237 | "name": "Jessika Dagenais",
238 | "scores": [
239 | {
240 | "score": 90.47179954427436,
241 | "type": "exam"
242 | },
243 | {
244 | "score": 90.3001402468489,
245 | "type": "quiz"
246 | },
247 | {
248 | "score": 95.17753772405909,
249 | "type": "homework"
250 | }
251 | ]
252 | }
253 | {
254 | "_id": 14,
255 | "name": "Alix Sherrill",
256 | "scores": [
257 | {
258 | "score": 25.15924151998215,
259 | "type": "exam"
260 | },
261 | {
262 | "score": 68.64484047692098,
263 | "type": "quiz"
264 | },
265 | {
266 | "score": 24.68462152686763,
267 | "type": "homework"
268 | }
269 | ]
270 | }
271 | {
272 | "_id": 15,
273 | "name": "Tambra Mercure",
274 | "scores": [
275 | {
276 | "score": 69.1565022533158,
277 | "type": "exam"
278 | },
279 | {
280 | "score": 3.311794422000724,
281 | "type": "quiz"
282 | },
283 | {
284 | "score": 45.03178973642521,
285 | "type": "homework"
286 | }
287 | ]
288 | }
289 | {
290 | "_id": 16,
291 | "name": "Dodie Staller",
292 | "scores": [
293 | {
294 | "score": 7.772386442858281,
295 | "type": "exam"
296 | },
297 | {
298 | "score": 31.84300235104542,
299 | "type": "quiz"
300 | },
301 | {
302 | "score": 80.52136407989194,
303 | "type": "homework"
304 | }
305 | ]
306 | }
307 | {
308 | "_id": 17,
309 | "name": "Fletcher Mcconnell",
310 | "scores": [
311 | {
312 | "score": 39.41011069729274,
313 | "type": "exam"
314 | },
315 | {
316 | "score": 81.13270307809924,
317 | "type": "quiz"
318 | },
319 | {
320 | "score": 97.70116640402922,
321 | "type": "homework"
322 | }
323 | ]
324 | }
325 | {
326 | "_id": 18,
327 | "name": "Verdell Sowinski",
328 | "scores": [
329 | {
330 | "score": 62.12870233109035,
331 | "type": "exam"
332 | },
333 | {
334 | "score": 84.74586220889356,
335 | "type": "quiz"
336 | },
337 | {
338 | "score": 81.58947824932574,
339 | "type": "homework"
340 | }
341 | ]
342 | }
343 | {
344 | "_id": 19,
345 | "name": "Gisela Levin",
346 | "scores": [
347 | {
348 | "score": 44.51211101958831,
349 | "type": "exam"
350 | },
351 | {
352 | "score": 0.6578497966368002,
353 | "type": "quiz"
354 | },
355 | {
356 | "score": 93.36341655949683,
357 | "type": "homework"
358 | }
359 | ]
360 | }
361 | {
362 | "_id": 20,
363 | "name": "Tressa Schwing",
364 | "scores": [
365 | {
366 | "score": 42.17439799514388,
367 | "type": "exam"
368 | },
369 | {
370 | "score": 71.99314840599558,
371 | "type": "quiz"
372 | },
373 | {
374 | "score": 81.23972632069464,
375 | "type": "homework"
376 | }
377 | ]
378 | }
379 | {
380 | "_id": 21,
381 | "name": "Rosana Vales",
382 | "scores": [
383 | {
384 | "score": 46.2289476258328,
385 | "type": "exam"
386 | },
387 | {
388 | "score": 98.34164225207036,
389 | "type": "quiz"
390 | },
391 | {
392 | "score": 36.18769746805938,
393 | "type": "homework"
394 | }
395 | ]
396 | }
397 | {
398 | "_id": 22,
399 | "name": "Margart Vitello",
400 | "scores": [
401 | {
402 | "score": 75.04996547553947,
403 | "type": "exam"
404 | },
405 | {
406 | "score": 10.23046475899236,
407 | "type": "quiz"
408 | },
409 | {
410 | "score": 96.72520512117761,
411 | "type": "homework"
412 | }
413 | ]
414 | }
415 | {
416 | "_id": 23,
417 | "name": "Tamika Schildgen",
418 | "scores": [
419 | {
420 | "score": 45.65432764125526,
421 | "type": "exam"
422 | },
423 | {
424 | "score": 64.32927049658846,
425 | "type": "quiz"
426 | },
427 | {
428 | "score": 83.53933351660562,
429 | "type": "homework"
430 | }
431 | ]
432 | }
433 | {
434 | "_id": 24,
435 | "name": "Jesusa Rickenbacker",
436 | "scores": [
437 | {
438 | "score": 86.0319702155683,
439 | "type": "exam"
440 | },
441 | {
442 | "score": 1.967495200433389,
443 | "type": "quiz"
444 | },
445 | {
446 | "score": 61.10861071547914,
447 | "type": "homework"
448 | }
449 | ]
450 | }
451 | {
452 | "_id": 25,
453 | "name": "Rudolph Domingo",
454 | "scores": [
455 | {
456 | "score": 74.75289335591543,
457 | "type": "exam"
458 | },
459 | {
460 | "score": 38.5413647805495,
461 | "type": "quiz"
462 | },
463 | {
464 | "score": 35.2554340953413,
465 | "type": "homework"
466 | }
467 | ]
468 | }
469 | {
470 | "_id": 26,
471 | "name": "Jonie Raby",
472 | "scores": [
473 | {
474 | "score": 19.17861192576963,
475 | "type": "exam"
476 | },
477 | {
478 | "score": 76.3890359749654,
479 | "type": "quiz"
480 | },
481 | {
482 | "score": 44.39605672647002,
483 | "type": "homework"
484 | }
485 | ]
486 | }
487 | {
488 | "_id": 27,
489 | "name": "Edgar Sarkis",
490 | "scores": [
491 | {
492 | "score": 8.606983261043888,
493 | "type": "exam"
494 | },
495 | {
496 | "score": 58.71180464203724,
497 | "type": "quiz"
498 | },
499 | {
500 | "score": 15.33726210596508,
501 | "type": "homework"
502 | }
503 | ]
504 | }
505 | {
506 | "_id": 28,
507 | "name": "Laureen Salomone",
508 | "scores": [
509 | {
510 | "score": 3.677565278992456,
511 | "type": "exam"
512 | },
513 | {
514 | "score": 7.119462599229987,
515 | "type": "quiz"
516 | },
517 | {
518 | "score": 82.87308922617427,
519 | "type": "homework"
520 | }
521 | ]
522 | }
523 | {
524 | "_id": 29,
525 | "name": "Gwyneth Garling",
526 | "scores": [
527 | {
528 | "score": 48.36644963899371,
529 | "type": "exam"
530 | },
531 | {
532 | "score": 10.37827022865908,
533 | "type": "quiz"
534 | },
535 | {
536 | "score": 93.26639335532833,
537 | "type": "homework"
538 | }
539 | ]
540 | }
541 | {
542 | "_id": 30,
543 | "name": "Kaila Deibler",
544 | "scores": [
545 | {
546 | "score": 15.89771199662455,
547 | "type": "exam"
548 | },
549 | {
550 | "score": 56.93965183412178,
551 | "type": "quiz"
552 | },
553 | {
554 | "score": 66.64493295066322,
555 | "type": "homework"
556 | }
557 | ]
558 | }
559 | {
560 | "_id": 31,
561 | "name": "Tandra Meadows",
562 | "scores": [
563 | {
564 | "score": 24.90138146001744,
565 | "type": "exam"
566 | },
567 | {
568 | "score": 28.8266541837344,
569 | "type": "quiz"
570 | },
571 | {
572 | "score": 97.16831550665721,
573 | "type": "homework"
574 | }
575 | ]
576 | }
577 | {
578 | "_id": 32,
579 | "name": "Gwen Honig",
580 | "scores": [
581 | {
582 | "score": 87.14345376886205,
583 | "type": "exam"
584 | },
585 | {
586 | "score": 99.45824441135635,
587 | "type": "quiz"
588 | },
589 | {
590 | "score": 76.66460454219344,
591 | "type": "homework"
592 | }
593 | ]
594 | }
595 | {
596 | "_id": 33,
597 | "name": "Sadie Jernigan",
598 | "scores": [
599 | {
600 | "score": 73.15861249943812,
601 | "type": "exam"
602 | },
603 | {
604 | "score": 2.987718065941702,
605 | "type": "quiz"
606 | },
607 | {
608 | "score": 82.54104198590488,
609 | "type": "homework"
610 | }
611 | ]
612 | }
613 | {
614 | "_id": 34,
615 | "name": "Carli Belvins",
616 | "scores": [
617 | {
618 | "score": 7.112266875518214,
619 | "type": "exam"
620 | },
621 | {
622 | "score": 67.734668378287,
623 | "type": "quiz"
624 | },
625 | {
626 | "score": 88.99855402666871,
627 | "type": "homework"
628 | }
629 | ]
630 | }
631 | {
632 | "_id": 35,
633 | "name": "Synthia Labelle",
634 | "scores": [
635 | {
636 | "score": 27.22049103148209,
637 | "type": "exam"
638 | },
639 | {
640 | "score": 31.28760039265919,
641 | "type": "quiz"
642 | },
643 | {
644 | "score": 79.23285425688643,
645 | "type": "homework"
646 | }
647 | ]
648 | }
649 | {
650 | "_id": 36,
651 | "name": "Eugene Magdaleno",
652 | "scores": [
653 | {
654 | "score": 73.055900093666,
655 | "type": "exam"
656 | },
657 | {
658 | "score": 79.85621560462026,
659 | "type": "quiz"
660 | },
661 | {
662 | "score": 66.09143669040472,
663 | "type": "homework"
664 | }
665 | ]
666 | }
667 | {
668 | "_id": 37,
669 | "name": "Meagan Oakes",
670 | "scores": [
671 | {
672 | "score": 86.06759716616264,
673 | "type": "exam"
674 | },
675 | {
676 | "score": 79.45097452834857,
677 | "type": "quiz"
678 | },
679 | {
680 | "score": 28.41090281547689,
681 | "type": "homework"
682 | }
683 | ]
684 | }
685 | {
686 | "_id": 38,
687 | "name": "Richelle Siemers",
688 | "scores": [
689 | {
690 | "score": 34.64373397163318,
691 | "type": "exam"
692 | },
693 | {
694 | "score": 91.46799649446983,
695 | "type": "quiz"
696 | },
697 | {
698 | "score": 56.12615074082559,
699 | "type": "homework"
700 | }
701 | ]
702 | }
703 | {
704 | "_id": 39,
705 | "name": "Mariette Batdorf",
706 | "scores": [
707 | {
708 | "score": 0.04381116979284005,
709 | "type": "exam"
710 | },
711 | {
712 | "score": 90.25774974259562,
713 | "type": "quiz"
714 | },
715 | {
716 | "score": 65.88612319625227,
717 | "type": "homework"
718 | }
719 | ]
720 | }
721 | {
722 | "_id": 40,
723 | "name": "Rachell Aman",
724 | "scores": [
725 | {
726 | "score": 84.53009035375172,
727 | "type": "exam"
728 | },
729 | {
730 | "score": 25.25568126160764,
731 | "type": "quiz"
732 | },
733 | {
734 | "score": 70.42062575402956,
735 | "type": "homework"
736 | }
737 | ]
738 | }
739 | {
740 | "_id": 41,
741 | "name": "Aleida Elsass",
742 | "scores": [
743 | {
744 | "score": 28.02518041693717,
745 | "type": "exam"
746 | },
747 | {
748 | "score": 95.25243105389065,
749 | "type": "quiz"
750 | },
751 | {
752 | "score": 68.05980405338909,
753 | "type": "homework"
754 | }
755 | ]
756 | }
757 | {
758 | "_id": 42,
759 | "name": "Kayce Kenyon",
760 | "scores": [
761 | {
762 | "score": 44.62441703708117,
763 | "type": "exam"
764 | },
765 | {
766 | "score": 27.38208798553111,
767 | "type": "quiz"
768 | },
769 | {
770 | "score": 97.43587143437509,
771 | "type": "homework"
772 | }
773 | ]
774 | }
775 | {
776 | "_id": 43,
777 | "name": "Ernestine Macfarland",
778 | "scores": [
779 | {
780 | "score": 15.29147856258362,
781 | "type": "exam"
782 | },
783 | {
784 | "score": 78.40698797039501,
785 | "type": "quiz"
786 | },
787 | {
788 | "score": 31.03031764716336,
789 | "type": "homework"
790 | }
791 | ]
792 | }
793 | {
794 | "_id": 44,
795 | "name": "Houston Valenti",
796 | "scores": [
797 | {
798 | "score": 98.06441387027331,
799 | "type": "exam"
800 | },
801 | {
802 | "score": 0.8760893342659504,
803 | "type": "quiz"
804 | },
805 | {
806 | "score": 15.2177618920215,
807 | "type": "homework"
808 | }
809 | ]
810 | }
811 | {
812 | "_id": 45,
813 | "name": "Terica Brugger",
814 | "scores": [
815 | {
816 | "score": 42.1011312120801,
817 | "type": "exam"
818 | },
819 | {
820 | "score": 41.73654145887228,
821 | "type": "quiz"
822 | },
823 | {
824 | "score": 18.91287189072117,
825 | "type": "homework"
826 | }
827 | ]
828 | }
829 | {
830 | "_id": 46,
831 | "name": "Lady Lefevers",
832 | "scores": [
833 | {
834 | "score": 16.89237820123443,
835 | "type": "exam"
836 | },
837 | {
838 | "score": 65.97505910406456,
839 | "type": "quiz"
840 | },
841 | {
842 | "score": 48.42527123437286,
843 | "type": "homework"
844 | }
845 | ]
846 | }
847 | {
848 | "_id": 47,
849 | "name": "Kurtis Jiles",
850 | "scores": [
851 | {
852 | "score": 92.96916908741805,
853 | "type": "exam"
854 | },
855 | {
856 | "score": 22.86854192921203,
857 | "type": "quiz"
858 | },
859 | {
860 | "score": 31.89793879453222,
861 | "type": "homework"
862 | }
863 | ]
864 | }
865 | {
866 | "_id": 48,
867 | "name": "Barbera Lippman",
868 | "scores": [
869 | {
870 | "score": 35.43490750932609,
871 | "type": "exam"
872 | },
873 | {
874 | "score": 97.42074160188449,
875 | "type": "quiz"
876 | },
877 | {
878 | "score": 74.1092960902528,
879 | "type": "homework"
880 | }
881 | ]
882 | }
883 | {
884 | "_id": 49,
885 | "name": "Dinah Sauve",
886 | "scores": [
887 | {
888 | "score": 96.64807532447064,
889 | "type": "exam"
890 | },
891 | {
892 | "score": 14.56470882270576,
893 | "type": "quiz"
894 | },
895 | {
896 | "score": 72.00519420743191,
897 | "type": "homework"
898 | }
899 | ]
900 | }
901 | {
902 | "_id": 50,
903 | "name": "Alica Pasley",
904 | "scores": [
905 | {
906 | "score": 19.38544736721771,
907 | "type": "exam"
908 | },
909 | {
910 | "score": 88.70752686639557,
911 | "type": "quiz"
912 | },
913 | {
914 | "score": 60.62755218680213,
915 | "type": "homework"
916 | }
917 | ]
918 | }
919 | {
920 | "_id": 51,
921 | "name": "Elizabet Kleine",
922 | "scores": [
923 | {
924 | "score": 86.81245449846962,
925 | "type": "exam"
926 | },
927 | {
928 | "score": 36.196443334522,
929 | "type": "quiz"
930 | },
931 | {
932 | "score": 77.94001750905642,
933 | "type": "homework"
934 | }
935 | ]
936 | }
937 | {
938 | "_id": 52,
939 | "name": "Tawana Oberg",
940 | "scores": [
941 | {
942 | "score": 80.59006098671075,
943 | "type": "exam"
944 | },
945 | {
946 | "score": 93.28438118988183,
947 | "type": "quiz"
948 | },
949 | {
950 | "score": 93.12134003887978,
951 | "type": "homework"
952 | }
953 | ]
954 | }
955 | {
956 | "_id": 53,
957 | "name": "Malisa Jeanes",
958 | "scores": [
959 | {
960 | "score": 33.44580005842922,
961 | "type": "exam"
962 | },
963 | {
964 | "score": 7.172746439960975,
965 | "type": "quiz"
966 | },
967 | {
968 | "score": 80.53328849494751,
969 | "type": "homework"
970 | }
971 | ]
972 | }
973 | {
974 | "_id": 54,
975 | "name": "Joel Rueter",
976 | "scores": [
977 | {
978 | "score": 87.53636893952853,
979 | "type": "exam"
980 | },
981 | {
982 | "score": 92.70974674256513,
983 | "type": "quiz"
984 | },
985 | {
986 | "score": 61.79032586247813,
987 | "type": "homework"
988 | }
989 | ]
990 | }
991 | {
992 | "_id": 55,
993 | "name": "Tresa Sinha",
994 | "scores": [
995 | {
996 | "score": 94.93136959210354,
997 | "type": "exam"
998 | },
999 | {
1000 | "score": 72.32226123565266,
1001 | "type": "quiz"
1002 | },
1003 | {
1004 | "score": 77.248768811767,
1005 | "type": "homework"
1006 | }
1007 | ]
1008 | }
1009 | {
1010 | "_id": 56,
1011 | "name": "Danika Loeffler",
1012 | "scores": [
1013 | {
1014 | "score": 21.54531707142236,
1015 | "type": "exam"
1016 | },
1017 | {
1018 | "score": 41.75962115078149,
1019 | "type": "quiz"
1020 | },
1021 | {
1022 | "score": 55.70195462204016,
1023 | "type": "homework"
1024 | }
1025 | ]
1026 | }
1027 | {
1028 | "_id": 57,
1029 | "name": "Chad Rahe",
1030 | "scores": [
1031 | {
1032 | "score": 40.84572027366789,
1033 | "type": "exam"
1034 | },
1035 | {
1036 | "score": 29.22733629679561,
1037 | "type": "quiz"
1038 | },
1039 | {
1040 | "score": 93.12112348179406,
1041 | "type": "homework"
1042 | }
1043 | ]
1044 | }
1045 | {
1046 | "_id": 58,
1047 | "name": "Joaquina Arbuckle",
1048 | "scores": [
1049 | {
1050 | "score": 28.66671659815553,
1051 | "type": "exam"
1052 | },
1053 | {
1054 | "score": 40.48858382583742,
1055 | "type": "quiz"
1056 | },
1057 | {
1058 | "score": 51.51393116681172,
1059 | "type": "homework"
1060 | }
1061 | ]
1062 | }
1063 | {
1064 | "_id": 59,
1065 | "name": "Vinnie Auerbach",
1066 | "scores": [
1067 | {
1068 | "score": 95.45508256300009,
1069 | "type": "exam"
1070 | },
1071 | {
1072 | "score": 7.512188017365151,
1073 | "type": "quiz"
1074 | },
1075 | {
1076 | "score": 28.5905754294006,
1077 | "type": "homework"
1078 | }
1079 | ]
1080 | }
1081 | {
1082 | "_id": 60,
1083 | "name": "Dusti Lemmond",
1084 | "scores": [
1085 | {
1086 | "score": 17.27725327681863,
1087 | "type": "exam"
1088 | },
1089 | {
1090 | "score": 83.24439414725833,
1091 | "type": "quiz"
1092 | },
1093 | {
1094 | "score": 81.84258722611811,
1095 | "type": "homework"
1096 | }
1097 | ]
1098 | }
1099 | {
1100 | "_id": 61,
1101 | "name": "Grady Zemke",
1102 | "scores": [
1103 | {
1104 | "score": 51.91561300267121,
1105 | "type": "exam"
1106 | },
1107 | {
1108 | "score": 50.08349374829509,
1109 | "type": "quiz"
1110 | },
1111 | {
1112 | "score": 95.34139273570386,
1113 | "type": "homework"
1114 | }
1115 | ]
1116 | }
1117 | {
1118 | "_id": 62,
1119 | "name": "Vina Matsunaga",
1120 | "scores": [
1121 | {
1122 | "score": 51.38190070034149,
1123 | "type": "exam"
1124 | },
1125 | {
1126 | "score": 34.63479282877322,
1127 | "type": "quiz"
1128 | },
1129 | {
1130 | "score": 46.27059093183421,
1131 | "type": "homework"
1132 | }
1133 | ]
1134 | }
1135 | {
1136 | "_id": 63,
1137 | "name": "Rubie Winton",
1138 | "scores": [
1139 | {
1140 | "score": 7.176062073558509,
1141 | "type": "exam"
1142 | },
1143 | {
1144 | "score": 46.32426882511162,
1145 | "type": "quiz"
1146 | },
1147 | {
1148 | "score": 19.24312817599633,
1149 | "type": "homework"
1150 | }
1151 | ]
1152 | }
1153 | {
1154 | "_id": 64,
1155 | "name": "Whitley Fears",
1156 | "scores": [
1157 | {
1158 | "score": 89.61845831842888,
1159 | "type": "exam"
1160 | },
1161 | {
1162 | "score": 82.44879156010508,
1163 | "type": "quiz"
1164 | },
1165 | {
1166 | "score": 96.57912148645883,
1167 | "type": "homework"
1168 | }
1169 | ]
1170 | }
1171 | {
1172 | "_id": 65,
1173 | "name": "Gena Riccio",
1174 | "scores": [
1175 | {
1176 | "score": 67.58395308948619,
1177 | "type": "exam"
1178 | },
1179 | {
1180 | "score": 67.2413500951588,
1181 | "type": "quiz"
1182 | },
1183 | {
1184 | "score": 42.93471779899529,
1185 | "type": "homework"
1186 | }
1187 | ]
1188 | }
1189 | {
1190 | "_id": 66,
1191 | "name": "Kim Xu",
1192 | "scores": [
1193 | {
1194 | "score": 19.96531774799065,
1195 | "type": "exam"
1196 | },
1197 | {
1198 | "score": 17.52966217224916,
1199 | "type": "quiz"
1200 | },
1201 | {
1202 | "score": 57.32983091095816,
1203 | "type": "homework"
1204 | }
1205 | ]
1206 | }
1207 | {
1208 | "_id": 67,
1209 | "name": "Merissa Mann",
1210 | "scores": [
1211 | {
1212 | "score": 75.1949733626123,
1213 | "type": "exam"
1214 | },
1215 | {
1216 | "score": 52.56522605123723,
1217 | "type": "quiz"
1218 | },
1219 | {
1220 | "score": 94.67518167209815,
1221 | "type": "homework"
1222 | }
1223 | ]
1224 | }
1225 | {
1226 | "_id": 68,
1227 | "name": "Jenise Mcguffie",
1228 | "scores": [
1229 | {
1230 | "score": 40.15210496060384,
1231 | "type": "exam"
1232 | },
1233 | {
1234 | "score": 90.60219950183566,
1235 | "type": "quiz"
1236 | },
1237 | {
1238 | "score": 51.58720341010564,
1239 | "type": "homework"
1240 | }
1241 | ]
1242 | }
1243 | {
1244 | "_id": 69,
1245 | "name": "Cody Strouth",
1246 | "scores": [
1247 | {
1248 | "score": 4.784730508547719,
1249 | "type": "exam"
1250 | },
1251 | {
1252 | "score": 99.80348240553108,
1253 | "type": "quiz"
1254 | },
1255 | {
1256 | "score": 97.89665889862901,
1257 | "type": "homework"
1258 | }
1259 | ]
1260 | }
1261 | {
1262 | "_id": 70,
1263 | "name": "Harriett Velarde",
1264 | "scores": [
1265 | {
1266 | "score": 33.7733570443736,
1267 | "type": "exam"
1268 | },
1269 | {
1270 | "score": 96.05228578589255,
1271 | "type": "quiz"
1272 | },
1273 | {
1274 | "score": 46.24926696413032,
1275 | "type": "homework"
1276 | }
1277 | ]
1278 | }
1279 | {
1280 | "_id": 71,
1281 | "name": "Kam Senters",
1282 | "scores": [
1283 | {
1284 | "score": 81.56497719010976,
1285 | "type": "exam"
1286 | },
1287 | {
1288 | "score": 5.247410853581524,
1289 | "type": "quiz"
1290 | },
1291 | {
1292 | "score": 92.10078400854972,
1293 | "type": "homework"
1294 | }
1295 | ]
1296 | }
1297 | {
1298 | "_id": 72,
1299 | "name": "Leonida Lafond",
1300 | "scores": [
1301 | {
1302 | "score": 92.10605086888438,
1303 | "type": "exam"
1304 | },
1305 | {
1306 | "score": 32.66022211621239,
1307 | "type": "quiz"
1308 | },
1309 | {
1310 | "score": 82.15588797092647,
1311 | "type": "homework"
1312 | }
1313 | ]
1314 | }
1315 | {
1316 | "_id": 73,
1317 | "name": "Devorah Smartt",
1318 | "scores": [
1319 | {
1320 | "score": 69.60160495436016,
1321 | "type": "exam"
1322 | },
1323 | {
1324 | "score": 6.931507591998553,
1325 | "type": "quiz"
1326 | },
1327 | {
1328 | "score": 55.66005349294464,
1329 | "type": "homework"
1330 | }
1331 | ]
1332 | }
1333 | {
1334 | "_id": 74,
1335 | "name": "Leola Lundin",
1336 | "scores": [
1337 | {
1338 | "score": 31.62936464207764,
1339 | "type": "exam"
1340 | },
1341 | {
1342 | "score": 91.28658941188532,
1343 | "type": "quiz"
1344 | },
1345 | {
1346 | "score": 93.71671632774428,
1347 | "type": "homework"
1348 | }
1349 | ]
1350 | }
1351 | {
1352 | "_id": 75,
1353 | "name": "Tonia Surace",
1354 | "scores": [
1355 | {
1356 | "score": 80.93655069496523,
1357 | "type": "exam"
1358 | },
1359 | {
1360 | "score": 79.54620208144452,
1361 | "type": "quiz"
1362 | },
1363 | {
1364 | "score": 41.34308724166419,
1365 | "type": "homework"
1366 | }
1367 | ]
1368 | }
1369 | {
1370 | "_id": 76,
1371 | "name": "Adrien Renda",
1372 | "scores": [
1373 | {
1374 | "score": 57.24794864351232,
1375 | "type": "exam"
1376 | },
1377 | {
1378 | "score": 19.5118228072558,
1379 | "type": "quiz"
1380 | },
1381 | {
1382 | "score": 70.71043448913191,
1383 | "type": "homework"
1384 | }
1385 | ]
1386 | }
1387 | {
1388 | "_id": 77,
1389 | "name": "Efrain Claw",
1390 | "scores": [
1391 | {
1392 | "score": 55.41266579085205,
1393 | "type": "exam"
1394 | },
1395 | {
1396 | "score": 31.30359328252952,
1397 | "type": "quiz"
1398 | },
1399 | {
1400 | "score": 88.73134194093676,
1401 | "type": "homework"
1402 | }
1403 | ]
1404 | }
1405 | {
1406 | "_id": 78,
1407 | "name": "Len Treiber",
1408 | "scores": [
1409 | {
1410 | "score": 21.21850173315791,
1411 | "type": "exam"
1412 | },
1413 | {
1414 | "score": 13.2282768150266,
1415 | "type": "quiz"
1416 | },
1417 | {
1418 | "score": 82.49842801247594,
1419 | "type": "homework"
1420 | }
1421 | ]
1422 | }
1423 | {
1424 | "_id": 79,
1425 | "name": "Mariela Sherer",
1426 | "scores": [
1427 | {
1428 | "score": 61.20158144877323,
1429 | "type": "exam"
1430 | },
1431 | {
1432 | "score": 52.75657259917104,
1433 | "type": "quiz"
1434 | },
1435 | {
1436 | "score": 90.97004773806381,
1437 | "type": "homework"
1438 | }
1439 | ]
1440 | }
1441 | {
1442 | "_id": 80,
1443 | "name": "Echo Pippins",
1444 | "scores": [
1445 | {
1446 | "score": 27.77924608896123,
1447 | "type": "exam"
1448 | },
1449 | {
1450 | "score": 85.1861976198818,
1451 | "type": "quiz"
1452 | },
1453 | {
1454 | "score": 92.50671800180454,
1455 | "type": "homework"
1456 | }
1457 | ]
1458 | }
1459 | {
1460 | "_id": 81,
1461 | "name": "Linnie Weigel",
1462 | "scores": [
1463 | {
1464 | "score": 66.0349256424749,
1465 | "type": "exam"
1466 | },
1467 | {
1468 | "score": 67.57096025532985,
1469 | "type": "quiz"
1470 | },
1471 | {
1472 | "score": 38.33608066073369,
1473 | "type": "homework"
1474 | }
1475 | ]
1476 | }
1477 | {
1478 | "_id": 82,
1479 | "name": "Santiago Dollins",
1480 | "scores": [
1481 | {
1482 | "score": 33.48242310776701,
1483 | "type": "exam"
1484 | },
1485 | {
1486 | "score": 60.49199094204558,
1487 | "type": "quiz"
1488 | },
1489 | {
1490 | "score": 87.02564768982076,
1491 | "type": "homework"
1492 | }
1493 | ]
1494 | }
1495 | {
1496 | "_id": 83,
1497 | "name": "Tonisha Games",
1498 | "scores": [
1499 | {
1500 | "score": 29.13833807032966,
1501 | "type": "exam"
1502 | },
1503 | {
1504 | "score": 35.25054111123917,
1505 | "type": "quiz"
1506 | },
1507 | {
1508 | "score": 66.73047056293319,
1509 | "type": "homework"
1510 | }
1511 | ]
1512 | }
1513 | {
1514 | "_id": 84,
1515 | "name": "Timothy Harrod",
1516 | "scores": [
1517 | {
1518 | "score": 93.23020013495737,
1519 | "type": "exam"
1520 | },
1521 | {
1522 | "score": 49.06010347848443,
1523 | "type": "quiz"
1524 | },
1525 | {
1526 | "score": 74.00788699415295,
1527 | "type": "homework"
1528 | }
1529 | ]
1530 | }
1531 | {
1532 | "_id": 85,
1533 | "name": "Rae Kohout",
1534 | "scores": [
1535 | {
1536 | "score": 63.86894250781692,
1537 | "type": "exam"
1538 | },
1539 | {
1540 | "score": 55.81549538273672,
1541 | "type": "quiz"
1542 | },
1543 | {
1544 | "score": 59.13566011309437,
1545 | "type": "homework"
1546 | }
1547 | ]
1548 | }
1549 | {
1550 | "_id": 86,
1551 | "name": "Brain Lachapelle",
1552 | "scores": [
1553 | {
1554 | "score": 2.013473187690951,
1555 | "type": "exam"
1556 | },
1557 | {
1558 | "score": 45.01802394825918,
1559 | "type": "quiz"
1560 | },
1561 | {
1562 | "score": 88.04712649447521,
1563 | "type": "homework"
1564 | }
1565 | ]
1566 | }
1567 | {
1568 | "_id": 87,
1569 | "name": "Toshiko Sabella",
1570 | "scores": [
1571 | {
1572 | "score": 21.05570509531929,
1573 | "type": "exam"
1574 | },
1575 | {
1576 | "score": 26.43387483146958,
1577 | "type": "quiz"
1578 | },
1579 | {
1580 | "score": 42.80331214002496,
1581 | "type": "homework"
1582 | }
1583 | ]
1584 | }
1585 | {
1586 | "_id": 88,
1587 | "name": "Keesha Papadopoulos",
1588 | "scores": [
1589 | {
1590 | "score": 82.35397321850031,
1591 | "type": "exam"
1592 | },
1593 | {
1594 | "score": 3.064361273717464,
1595 | "type": "quiz"
1596 | },
1597 | {
1598 | "score": 98.46867828216399,
1599 | "type": "homework"
1600 | }
1601 | ]
1602 | }
1603 | {
1604 | "_id": 89,
1605 | "name": "Cassi Heal",
1606 | "scores": [
1607 | {
1608 | "score": 43.04310994985133,
1609 | "type": "exam"
1610 | },
1611 | {
1612 | "score": 0.006247360551892012,
1613 | "type": "quiz"
1614 | },
1615 | {
1616 | "score": 63.88558436723092,
1617 | "type": "homework"
1618 | }
1619 | ]
1620 | }
1621 | {
1622 | "_id": 90,
1623 | "name": "Osvaldo Hirt",
1624 | "scores": [
1625 | {
1626 | "score": 67.44931456608883,
1627 | "type": "exam"
1628 | },
1629 | {
1630 | "score": 41.77986504201782,
1631 | "type": "quiz"
1632 | },
1633 | {
1634 | "score": 76.30879472084027,
1635 | "type": "homework"
1636 | }
1637 | ]
1638 | }
1639 | {
1640 | "_id": 91,
1641 | "name": "Ty Barbieri",
1642 | "scores": [
1643 | {
1644 | "score": 38.43781607953586,
1645 | "type": "exam"
1646 | },
1647 | {
1648 | "score": 95.70340794272111,
1649 | "type": "quiz"
1650 | },
1651 | {
1652 | "score": 72.80272364761178,
1653 | "type": "homework"
1654 | }
1655 | ]
1656 | }
1657 | {
1658 | "_id": 92,
1659 | "name": "Ta Sikorski",
1660 | "scores": [
1661 | {
1662 | "score": 30.02140506101446,
1663 | "type": "exam"
1664 | },
1665 | {
1666 | "score": 23.89164976236439,
1667 | "type": "quiz"
1668 | },
1669 | {
1670 | "score": 61.82907698626848,
1671 | "type": "homework"
1672 | }
1673 | ]
1674 | }
1675 | {
1676 | "_id": 93,
1677 | "name": "Lucinda Vanderburg",
1678 | "scores": [
1679 | {
1680 | "score": 27.55843343656866,
1681 | "type": "exam"
1682 | },
1683 | {
1684 | "score": 11.45699271327768,
1685 | "type": "quiz"
1686 | },
1687 | {
1688 | "score": 75.53546873615787,
1689 | "type": "homework"
1690 | }
1691 | ]
1692 | }
1693 | {
1694 | "_id": 94,
1695 | "name": "Darby Wass",
1696 | "scores": [
1697 | {
1698 | "score": 6.867644836612586,
1699 | "type": "exam"
1700 | },
1701 | {
1702 | "score": 63.4908039680606,
1703 | "type": "quiz"
1704 | },
1705 | {
1706 | "score": 85.41865347441522,
1707 | "type": "homework"
1708 | }
1709 | ]
1710 | }
1711 | {
1712 | "_id": 95,
1713 | "name": "Omar Bowdoin",
1714 | "scores": [
1715 | {
1716 | "score": 8.58858127638702,
1717 | "type": "exam"
1718 | },
1719 | {
1720 | "score": 88.40377630359677,
1721 | "type": "quiz"
1722 | },
1723 | {
1724 | "score": 25.71387474240768,
1725 | "type": "homework"
1726 | }
1727 | ]
1728 | }
1729 | {
1730 | "_id": 96,
1731 | "name": "Milan Mcgavock",
1732 | "scores": [
1733 | {
1734 | "score": 69.11554341921843,
1735 | "type": "exam"
1736 | },
1737 | {
1738 | "score": 10.2027724707151,
1739 | "type": "quiz"
1740 | },
1741 | {
1742 | "score": 24.87545552041663,
1743 | "type": "homework"
1744 | }
1745 | ]
1746 | }
1747 | {
1748 | "_id": 97,
1749 | "name": "Maren Scheider",
1750 | "scores": [
1751 | {
1752 | "score": 94.4329121733663,
1753 | "type": "exam"
1754 | },
1755 | {
1756 | "score": 77.28263690107663,
1757 | "type": "quiz"
1758 | },
1759 | {
1760 | "score": 59.46326216544371,
1761 | "type": "homework"
1762 | }
1763 | ]
1764 | }
1765 | {
1766 | "_id": 98,
1767 | "name": "Carli Ector",
1768 | "scores": [
1769 | {
1770 | "score": 88.18040268522668,
1771 | "type": "exam"
1772 | },
1773 | {
1774 | "score": 60.3111085581054,
1775 | "type": "quiz"
1776 | },
1777 | {
1778 | "score": 96.33612053785647,
1779 | "type": "homework"
1780 | }
1781 | ]
1782 | }
1783 | {
1784 | "_id": 99,
1785 | "name": "Jaclyn Morado",
1786 | "scores": [
1787 | {
1788 | "score": 70.27627082122453,
1789 | "type": "exam"
1790 | },
1791 | {
1792 | "score": 56.78470387064279,
1793 | "type": "quiz"
1794 | },
1795 | {
1796 | "score": 47.48518298423097,
1797 | "type": "homework"
1798 | }
1799 | ]
1800 | }
1801 | {
1802 | "_id": 100,
1803 | "name": "Demarcus Audette",
1804 | "scores": [
1805 | {
1806 | "score": 47.42608580155614,
1807 | "type": "exam"
1808 | },
1809 | {
1810 | "score": 44.83416623719906,
1811 | "type": "quiz"
1812 | },
1813 | {
1814 | "score": 39.01726616178844,
1815 | "type": "homework"
1816 | }
1817 | ]
1818 | }
1819 | {
1820 | "_id": 101,
1821 | "name": "Tania Hulett",
1822 | "scores": [
1823 | {
1824 | "score": 21.84617015735916,
1825 | "type": "exam"
1826 | },
1827 | {
1828 | "score": 53.8568257735492,
1829 | "type": "quiz"
1830 | },
1831 | {
1832 | "score": 79.60533635579307,
1833 | "type": "homework"
1834 | }
1835 | ]
1836 | }
1837 | {
1838 | "_id": 102,
1839 | "name": "Mercedez Garduno",
1840 | "scores": [
1841 | {
1842 | "score": 49.52877007656483,
1843 | "type": "exam"
1844 | },
1845 | {
1846 | "score": 44.55505066212384,
1847 | "type": "quiz"
1848 | },
1849 | {
1850 | "score": 81.50869746632009,
1851 | "type": "homework"
1852 | }
1853 | ]
1854 | }
1855 | {
1856 | "_id": 103,
1857 | "name": "Fleta Duplantis",
1858 | "scores": [
1859 | {
1860 | "score": 84.37799696030743,
1861 | "type": "exam"
1862 | },
1863 | {
1864 | "score": 15.95792143439528,
1865 | "type": "quiz"
1866 | },
1867 | {
1868 | "score": 77.80745176713172,
1869 | "type": "homework"
1870 | }
1871 | ]
1872 | }
1873 | {
1874 | "_id": 104,
1875 | "name": "Brittny Warwick",
1876 | "scores": [
1877 | {
1878 | "score": 69.54399888097534,
1879 | "type": "exam"
1880 | },
1881 | {
1882 | "score": 82.00469934215849,
1883 | "type": "quiz"
1884 | },
1885 | {
1886 | "score": 95.96446106607902,
1887 | "type": "homework"
1888 | }
1889 | ]
1890 | }
1891 | {
1892 | "_id": 105,
1893 | "name": "Shin Allbright",
1894 | "scores": [
1895 | {
1896 | "score": 62.28388941877533,
1897 | "type": "exam"
1898 | },
1899 | {
1900 | "score": 85.26863799439475,
1901 | "type": "quiz"
1902 | },
1903 | {
1904 | "score": 88.9947941542333,
1905 | "type": "homework"
1906 | }
1907 | ]
1908 | }
1909 | {
1910 | "_id": 106,
1911 | "name": "Karry Petrarca",
1912 | "scores": [
1913 | {
1914 | "score": 3.677125771067413,
1915 | "type": "exam"
1916 | },
1917 | {
1918 | "score": 40.39799056667404,
1919 | "type": "quiz"
1920 | },
1921 | {
1922 | "score": 14.38347127905983,
1923 | "type": "homework"
1924 | }
1925 | ]
1926 | }
1927 | {
1928 | "_id": 107,
1929 | "name": "Beckie Millington",
1930 | "scores": [
1931 | {
1932 | "score": 69.52419218194589,
1933 | "type": "exam"
1934 | },
1935 | {
1936 | "score": 24.85411404016219,
1937 | "type": "quiz"
1938 | },
1939 | {
1940 | "score": 34.92039455520659,
1941 | "type": "homework"
1942 | }
1943 | ]
1944 | }
1945 | {
1946 | "_id": 108,
1947 | "name": "Mikaela Meidinger",
1948 | "scores": [
1949 | {
1950 | "score": 63.75595052560389,
1951 | "type": "exam"
1952 | },
1953 | {
1954 | "score": 59.52298111997963,
1955 | "type": "quiz"
1956 | },
1957 | {
1958 | "score": 88.66481441499843,
1959 | "type": "homework"
1960 | }
1961 | ]
1962 | }
1963 | {
1964 | "_id": 109,
1965 | "name": "Flora Duell",
1966 | "scores": [
1967 | {
1968 | "score": 40.68238966626067,
1969 | "type": "exam"
1970 | },
1971 | {
1972 | "score": 46.77972040308903,
1973 | "type": "quiz"
1974 | },
1975 | {
1976 | "score": 69.29400057020965,
1977 | "type": "homework"
1978 | }
1979 | ]
1980 | }
1981 | {
1982 | "_id": 110,
1983 | "name": "Nobuko Linzey",
1984 | "scores": [
1985 | {
1986 | "score": 67.40792606687442,
1987 | "type": "exam"
1988 | },
1989 | {
1990 | "score": 58.58331128403415,
1991 | "type": "quiz"
1992 | },
1993 | {
1994 | "score": 47.44831568815929,
1995 | "type": "homework"
1996 | }
1997 | ]
1998 | }
1999 | {
2000 | "_id": 111,
2001 | "name": "Gennie Ratner",
2002 | "scores": [
2003 | {
2004 | "score": 62.74309964110307,
2005 | "type": "exam"
2006 | },
2007 | {
2008 | "score": 92.18013849235186,
2009 | "type": "quiz"
2010 | },
2011 | {
2012 | "score": 53.11174468047395,
2013 | "type": "homework"
2014 | }
2015 | ]
2016 | }
2017 | {
2018 | "_id": 112,
2019 | "name": "Myrtle Wolfinger",
2020 | "scores": [
2021 | {
2022 | "score": 73.93895528856032,
2023 | "type": "exam"
2024 | },
2025 | {
2026 | "score": 35.99397009906073,
2027 | "type": "quiz"
2028 | },
2029 | {
2030 | "score": 93.85826506506328,
2031 | "type": "homework"
2032 | }
2033 | ]
2034 | }
2035 | {
2036 | "_id": 113,
2037 | "name": "",
2038 | "scores": [
2039 | {
2040 | "score": 77.57315913088024,
2041 | "type": "exam"
2042 | },
2043 | {
2044 | "score": 13.28135073340091,
2045 | "type": "quiz"
2046 | },
2047 | {
2048 | "score": 67.27527802263116,
2049 | "type": "homework"
2050 | }
2051 | ]
2052 | }
2053 | {
2054 | "_id": 114,
2055 | "name": "aimee Zank",
2056 | "scores": [
2057 | {
2058 | "score": 15.91636686717778,
2059 | "type": "exam"
2060 | },
2061 | {
2062 | "score": 96.12953798826392,
2063 | "type": "quiz"
2064 | },
2065 | {
2066 | "score": 18.92628947700149,
2067 | "type": "homework"
2068 | }
2069 | ]
2070 | }
2071 | {
2072 | "_id": 115,
2073 | "name": "Aurelia Menendez",
2074 | "scores": [
2075 | {
2076 | "score": 5.105728872755167,
2077 | "type": "exam"
2078 | },
2079 | {
2080 | "score": 7.375913405784407,
2081 | "type": "quiz"
2082 | },
2083 | {
2084 | "score": 92.62414866541212,
2085 | "type": "homework"
2086 | }
2087 | ]
2088 | }
2089 | {
2090 | "_id": 116,
2091 | "name": "Corliss Zuk",
2092 | "scores": [
2093 | {
2094 | "score": 76.45468797439878,
2095 | "type": "exam"
2096 | },
2097 | {
2098 | "score": 53.02642890026489,
2099 | "type": "quiz"
2100 | },
2101 | {
2102 | "score": 91.86573111689813,
2103 | "type": "homework"
2104 | }
2105 | ]
2106 | }
2107 | {
2108 | "_id": 117,
2109 | "name": "Bao Ziglar",
2110 | "scores": [
2111 | {
2112 | "score": 37.22753032391262,
2113 | "type": "exam"
2114 | },
2115 | {
2116 | "score": 52.75139192596129,
2117 | "type": "quiz"
2118 | },
2119 | {
2120 | "score": 64.06863625194231,
2121 | "type": "homework"
2122 | }
2123 | ]
2124 | }
2125 | {
2126 | "_id": 118,
2127 | "name": "Zachary Langlais",
2128 | "scores": [
2129 | {
2130 | "score": 62.20457822364115,
2131 | "type": "exam"
2132 | },
2133 | {
2134 | "score": 61.03733414415722,
2135 | "type": "quiz"
2136 | },
2137 | {
2138 | "score": 82.41688205392703,
2139 | "type": "homework"
2140 | }
2141 | ]
2142 | }
2143 | {
2144 | "_id": 119,
2145 | "name": "Wilburn Spiess",
2146 | "scores": [
2147 | {
2148 | "score": 52.36963021569788,
2149 | "type": "exam"
2150 | },
2151 | {
2152 | "score": 96.5715450678789,
2153 | "type": "quiz"
2154 | },
2155 | {
2156 | "score": 61.35034001494281,
2157 | "type": "homework"
2158 | }
2159 | ]
2160 | }
2161 | {
2162 | "_id": 120,
2163 | "name": "Jenette Flanders",
2164 | "scores": [
2165 | {
2166 | "score": 22.0445143239363,
2167 | "type": "exam"
2168 | },
2169 | {
2170 | "score": 22.43958080566196,
2171 | "type": "quiz"
2172 | },
2173 | {
2174 | "score": 63.38749542414235,
2175 | "type": "homework"
2176 | }
2177 | ]
2178 | }
2179 | {
2180 | "_id": 121,
2181 | "name": "Salena Olmos",
2182 | "scores": [
2183 | {
2184 | "score": 0.8007809823509016,
2185 | "type": "exam"
2186 | },
2187 | {
2188 | "score": 44.71135559183793,
2189 | "type": "quiz"
2190 | },
2191 | {
2192 | "score": 65.17342981800904,
2193 | "type": "homework"
2194 | }
2195 | ]
2196 | }
2197 | {
2198 | "_id": 122,
2199 | "name": "Daphne Zheng",
2200 | "scores": [
2201 | {
2202 | "score": 61.47626628718472,
2203 | "type": "exam"
2204 | },
2205 | {
2206 | "score": 21.99638326978255,
2207 | "type": "quiz"
2208 | },
2209 | {
2210 | "score": 88.2119997542672,
2211 | "type": "homework"
2212 | }
2213 | ]
2214 | }
2215 | {
2216 | "_id": 123,
2217 | "name": "Sanda Ryba",
2218 | "scores": [
2219 | {
2220 | "score": 10.62413290291121,
2221 | "type": "exam"
2222 | },
2223 | {
2224 | "score": 3.544356815821981,
2225 | "type": "quiz"
2226 | },
2227 | {
2228 | "score": 57.10297055409504,
2229 | "type": "homework"
2230 | }
2231 | ]
2232 | }
2233 | {
2234 | "_id": 124,
2235 | "name": "Denisha Cast",
2236 | "scores": [
2237 | {
2238 | "score": 2.723204808959712,
2239 | "type": "exam"
2240 | },
2241 | {
2242 | "score": 38.47056093169111,
2243 | "type": "quiz"
2244 | },
2245 | {
2246 | "score": 77.04035583743548,
2247 | "type": "homework"
2248 | }
2249 | ]
2250 | }
2251 | {
2252 | "_id": 125,
2253 | "name": "Marcus Blohm",
2254 | "scores": [
2255 | {
2256 | "score": 64.47719204148157,
2257 | "type": "exam"
2258 | },
2259 | {
2260 | "score": 23.68353886432903,
2261 | "type": "quiz"
2262 | },
2263 | {
2264 | "score": 48.87355812474999,
2265 | "type": "homework"
2266 | }
2267 | ]
2268 | }
2269 | {
2270 | "_id": 126,
2271 | "name": "Quincy Danaher",
2272 | "scores": [
2273 | {
2274 | "score": 40.53136904234401,
2275 | "type": "exam"
2276 | },
2277 | {
2278 | "score": 83.09270171511093,
2279 | "type": "quiz"
2280 | },
2281 | {
2282 | "score": 79.004550587978,
2283 | "type": "homework"
2284 | }
2285 | ]
2286 | }
2287 | {
2288 | "_id": 127,
2289 | "name": "Jessika Dagenais",
2290 | "scores": [
2291 | {
2292 | "score": 96.93459855769822,
2293 | "type": "exam"
2294 | },
2295 | {
2296 | "score": 95.6756371543187,
2297 | "type": "quiz"
2298 | },
2299 | {
2300 | "score": 70.7887302106597,
2301 | "type": "homework"
2302 | }
2303 | ]
2304 | }
2305 | {
2306 | "_id": 128,
2307 | "name": "Alix Sherrill",
2308 | "scores": [
2309 | {
2310 | "score": 43.67436243299881,
2311 | "type": "exam"
2312 | },
2313 | {
2314 | "score": 14.98112420690882,
2315 | "type": "quiz"
2316 | },
2317 | {
2318 | "score": 23.62416821198536,
2319 | "type": "homework"
2320 | }
2321 | ]
2322 | }
2323 | {
2324 | "_id": 129,
2325 | "name": "Tambra Mercure",
2326 | "scores": [
2327 | {
2328 | "score": 62.61423873241083,
2329 | "type": "exam"
2330 | },
2331 | {
2332 | "score": 47.64776674251425,
2333 | "type": "quiz"
2334 | },
2335 | {
2336 | "score": 85.20578508528978,
2337 | "type": "homework"
2338 | }
2339 | ]
2340 | }
2341 | {
2342 | "_id": 130,
2343 | "name": "Dodie Staller",
2344 | "scores": [
2345 | {
2346 | "score": 52.16051124848157,
2347 | "type": "exam"
2348 | },
2349 | {
2350 | "score": 83.51563143820728,
2351 | "type": "quiz"
2352 | },
2353 | {
2354 | "score": 63.88857636557489,
2355 | "type": "homework"
2356 | }
2357 | ]
2358 | }
2359 | {
2360 | "_id": 131,
2361 | "name": "Fletcher Mcconnell",
2362 | "scores": [
2363 | {
2364 | "score": 24.98670635479149,
2365 | "type": "exam"
2366 | },
2367 | {
2368 | "score": 94.90809903126159,
2369 | "type": "quiz"
2370 | },
2371 | {
2372 | "score": 29.37194792367135,
2373 | "type": "homework"
2374 | }
2375 | ]
2376 | }
2377 | {
2378 | "_id": 132,
2379 | "name": "Verdell Sowinski",
2380 | "scores": [
2381 | {
2382 | "score": 20.1442549902647,
2383 | "type": "exam"
2384 | },
2385 | {
2386 | "score": 47.66457425945161,
2387 | "type": "quiz"
2388 | },
2389 | {
2390 | "score": 77.87844292368344,
2391 | "type": "homework"
2392 | }
2393 | ]
2394 | }
2395 | {
2396 | "_id": 133,
2397 | "name": "Gisela Levin",
2398 | "scores": [
2399 | {
2400 | "score": 15.88727528055548,
2401 | "type": "exam"
2402 | },
2403 | {
2404 | "score": 91.49884857295594,
2405 | "type": "quiz"
2406 | },
2407 | {
2408 | "score": 16.56032169309347,
2409 | "type": "homework"
2410 | }
2411 | ]
2412 | }
2413 | {
2414 | "_id": 134,
2415 | "name": "Tressa Schwing",
2416 | "scores": [
2417 | {
2418 | "score": 54.53947018434061,
2419 | "type": "exam"
2420 | },
2421 | {
2422 | "score": 22.26443529294689,
2423 | "type": "quiz"
2424 | },
2425 | {
2426 | "score": 89.29532364756331,
2427 | "type": "homework"
2428 | }
2429 | ]
2430 | }
2431 | {
2432 | "_id": 135,
2433 | "name": "Rosana Vales",
2434 | "scores": [
2435 | {
2436 | "score": 15.73156258820246,
2437 | "type": "exam"
2438 | },
2439 | {
2440 | "score": 33.70281347493842,
2441 | "type": "quiz"
2442 | },
2443 | {
2444 | "score": 62.79875994037851,
2445 | "type": "homework"
2446 | }
2447 | ]
2448 | }
2449 | {
2450 | "_id": 136,
2451 | "name": "Margart Vitello",
2452 | "scores": [
2453 | {
2454 | "score": 99.33685767140612,
2455 | "type": "exam"
2456 | },
2457 | {
2458 | "score": 1.25322762871457,
2459 | "type": "quiz"
2460 | },
2461 | {
2462 | "score": 66.22827571617455,
2463 | "type": "homework"
2464 | }
2465 | ]
2466 | }
2467 | {
2468 | "_id": 137,
2469 | "name": "Tamika Schildgen",
2470 | "scores": [
2471 | {
2472 | "score": 4.433956226109692,
2473 | "type": "exam"
2474 | },
2475 | {
2476 | "score": 65.50313785402548,
2477 | "type": "quiz"
2478 | },
2479 | {
2480 | "score": 89.5950384993947,
2481 | "type": "homework"
2482 | }
2483 | ]
2484 | }
2485 | {
2486 | "_id": 138,
2487 | "name": "Jesusa Rickenbacker",
2488 | "scores": [
2489 | {
2490 | "score": 15.6237624645333,
2491 | "type": "exam"
2492 | },
2493 | {
2494 | "score": 7.856092232737,
2495 | "type": "quiz"
2496 | },
2497 | {
2498 | "score": 92.06889864132863,
2499 | "type": "homework"
2500 | }
2501 | ]
2502 | }
2503 | {
2504 | "_id": 139,
2505 | "name": "Rudolph Domingo",
2506 | "scores": [
2507 | {
2508 | "score": 33.02956040417582,
2509 | "type": "exam"
2510 | },
2511 | {
2512 | "score": 35.99586495205484,
2513 | "type": "quiz"
2514 | },
2515 | {
2516 | "score": 91.06098699300175,
2517 | "type": "homework"
2518 | }
2519 | ]
2520 | }
2521 | {
2522 | "_id": 140,
2523 | "name": "Jonie Raby",
2524 | "scores": [
2525 | {
2526 | "score": 7.307863391324043,
2527 | "type": "exam"
2528 | },
2529 | {
2530 | "score": 21.72514968277675,
2531 | "type": "quiz"
2532 | },
2533 | {
2534 | "score": 73.8284408290604,
2535 | "type": "homework"
2536 | }
2537 | ]
2538 | }
2539 | {
2540 | "_id": 141,
2541 | "name": "Edgar Sarkis",
2542 | "scores": [
2543 | {
2544 | "score": 65.99888014434269,
2545 | "type": "exam"
2546 | },
2547 | {
2548 | "score": 58.75598946266268,
2549 | "type": "quiz"
2550 | },
2551 | {
2552 | "score": 75.06379354463246,
2553 | "type": "homework"
2554 | }
2555 | ]
2556 | }
2557 | {
2558 | "_id": 142,
2559 | "name": "Laureen Salomone",
2560 | "scores": [
2561 | {
2562 | "score": 42.54322973844196,
2563 | "type": "exam"
2564 | },
2565 | {
2566 | "score": 33.03152379449381,
2567 | "type": "quiz"
2568 | },
2569 | {
2570 | "score": 77.52357320933667,
2571 | "type": "homework"
2572 | }
2573 | ]
2574 | }
2575 | {
2576 | "_id": 143,
2577 | "name": "Gwyneth Garling",
2578 | "scores": [
2579 | {
2580 | "score": 44.29553481758053,
2581 | "type": "exam"
2582 | },
2583 | {
2584 | "score": 23.15599504527296,
2585 | "type": "quiz"
2586 | },
2587 | {
2588 | "score": 84.83695219376807,
2589 | "type": "homework"
2590 | }
2591 | ]
2592 | }
2593 | {
2594 | "_id": 144,
2595 | "name": "Kaila Deibler",
2596 | "scores": [
2597 | {
2598 | "score": 20.85988856264308,
2599 | "type": "exam"
2600 | },
2601 | {
2602 | "score": 73.51120532285645,
2603 | "type": "quiz"
2604 | },
2605 | {
2606 | "score": 88.72483530139125,
2607 | "type": "homework"
2608 | }
2609 | ]
2610 | }
2611 | {
2612 | "_id": 145,
2613 | "name": "Tandra Meadows",
2614 | "scores": [
2615 | {
2616 | "score": 19.07796402740767,
2617 | "type": "exam"
2618 | },
2619 | {
2620 | "score": 7.63846325490759,
2621 | "type": "quiz"
2622 | },
2623 | {
2624 | "score": 60.84655775785094,
2625 | "type": "homework"
2626 | }
2627 | ]
2628 | }
2629 | {
2630 | "_id": 146,
2631 | "name": "Gwen Honig",
2632 | "scores": [
2633 | {
2634 | "score": 35.99646382910844,
2635 | "type": "exam"
2636 | },
2637 | {
2638 | "score": 74.46323507534565,
2639 | "type": "quiz"
2640 | },
2641 | {
2642 | "score": 90.95590422002779,
2643 | "type": "homework"
2644 | }
2645 | ]
2646 | }
2647 | {
2648 | "_id": 147,
2649 | "name": "Sadie Jernigan",
2650 | "scores": [
2651 | {
2652 | "score": 6.14281392478545,
2653 | "type": "exam"
2654 | },
2655 | {
2656 | "score": 44.94102013771302,
2657 | "type": "quiz"
2658 | },
2659 | {
2660 | "score": 89.94407975401369,
2661 | "type": "homework"
2662 | }
2663 | ]
2664 | }
2665 | {
2666 | "_id": 148,
2667 | "name": "Carli Belvins",
2668 | "scores": [
2669 | {
2670 | "score": 84.4361816750119,
2671 | "type": "exam"
2672 | },
2673 | {
2674 | "score": 1.702113040528119,
2675 | "type": "quiz"
2676 | },
2677 | {
2678 | "score": 88.48032660881387,
2679 | "type": "homework"
2680 | }
2681 | ]
2682 | }
2683 | {
2684 | "_id": 149,
2685 | "name": "Synthia Labelle",
2686 | "scores": [
2687 | {
2688 | "score": 11.06312649271668,
2689 | "type": "exam"
2690 | },
2691 | {
2692 | "score": 89.27462706564148,
2693 | "type": "quiz"
2694 | },
2695 | {
2696 | "score": 41.1722010153017,
2697 | "type": "homework"
2698 | }
2699 | ]
2700 | }
2701 | {
2702 | "_id": 150,
2703 | "name": "Eugene Magdaleno",
2704 | "scores": [
2705 | {
2706 | "score": 69.64543341032858,
2707 | "type": "exam"
2708 | },
2709 | {
2710 | "score": 17.46202326917462,
2711 | "type": "quiz"
2712 | },
2713 | {
2714 | "score": 39.41502498794787,
2715 | "type": "homework"
2716 | }
2717 | ]
2718 | }
2719 | {
2720 | "_id": 151,
2721 | "name": "Meagan Oakes",
2722 | "scores": [
2723 | {
2724 | "score": 75.02808260234913,
2725 | "type": "exam"
2726 | },
2727 | {
2728 | "score": 35.45524188731927,
2729 | "type": "quiz"
2730 | },
2731 | {
2732 | "score": 75.84754202828454,
2733 | "type": "homework"
2734 | }
2735 | ]
2736 | }
2737 | {
2738 | "_id": 152,
2739 | "name": "Richelle Siemers",
2740 | "scores": [
2741 | {
2742 | "score": 52.0158789874646,
2743 | "type": "exam"
2744 | },
2745 | {
2746 | "score": 19.25549934746802,
2747 | "type": "quiz"
2748 | },
2749 | {
2750 | "score": 68.33217408510437,
2751 | "type": "homework"
2752 | }
2753 | ]
2754 | }
2755 | {
2756 | "_id": 153,
2757 | "name": "Mariette Batdorf",
2758 | "scores": [
2759 | {
2760 | "score": 91.38690728885123,
2761 | "type": "exam"
2762 | },
2763 | {
2764 | "score": 39.98831767858929,
2765 | "type": "quiz"
2766 | },
2767 | {
2768 | "score": 51.59702098442595,
2769 | "type": "homework"
2770 | }
2771 | ]
2772 | }
2773 | {
2774 | "_id": 154,
2775 | "name": "Rachell Aman",
2776 | "scores": [
2777 | {
2778 | "score": 94.50988306850947,
2779 | "type": "exam"
2780 | },
2781 | {
2782 | "score": 5.68414255121964,
2783 | "type": "quiz"
2784 | },
2785 | {
2786 | "score": 64.46720717616572,
2787 | "type": "homework"
2788 | }
2789 | ]
2790 | }
2791 | {
2792 | "_id": 155,
2793 | "name": "Aleida Elsass",
2794 | "scores": [
2795 | {
2796 | "score": 42.89558347656537,
2797 | "type": "exam"
2798 | },
2799 | {
2800 | "score": 94.10647660402866,
2801 | "type": "quiz"
2802 | },
2803 | {
2804 | "score": 30.56402201379193,
2805 | "type": "homework"
2806 | }
2807 | ]
2808 | }
2809 | {
2810 | "_id": 156,
2811 | "name": "Kayce Kenyon",
2812 | "scores": [
2813 | {
2814 | "score": 54.00824880446614,
2815 | "type": "exam"
2816 | },
2817 | {
2818 | "score": 19.20300722190935,
2819 | "type": "quiz"
2820 | },
2821 | {
2822 | "score": 71.57649363606814,
2823 | "type": "homework"
2824 | }
2825 | ]
2826 | }
2827 | {
2828 | "_id": 157,
2829 | "name": "Ernestine Macfarland",
2830 | "scores": [
2831 | {
2832 | "score": 9.666623747888858,
2833 | "type": "exam"
2834 | },
2835 | {
2836 | "score": 98.76040135775126,
2837 | "type": "quiz"
2838 | },
2839 | {
2840 | "score": 51.67453757397309,
2841 | "type": "homework"
2842 | }
2843 | ]
2844 | }
2845 | {
2846 | "_id": 158,
2847 | "name": "Houston Valenti",
2848 | "scores": [
2849 | {
2850 | "score": 68.36209185504055,
2851 | "type": "exam"
2852 | },
2853 | {
2854 | "score": 15.83819664395878,
2855 | "type": "quiz"
2856 | },
2857 | {
2858 | "score": 81.7258704821604,
2859 | "type": "homework"
2860 | }
2861 | ]
2862 | }
2863 | {
2864 | "_id": 159,
2865 | "name": "Terica Brugger",
2866 | "scores": [
2867 | {
2868 | "score": 97.822030541043,
2869 | "type": "exam"
2870 | },
2871 | {
2872 | "score": 91.56280485763772,
2873 | "type": "quiz"
2874 | },
2875 | {
2876 | "score": 62.01976292987356,
2877 | "type": "homework"
2878 | }
2879 | ]
2880 | }
2881 | {
2882 | "_id": 160,
2883 | "name": "Lady Lefevers",
2884 | "scores": [
2885 | {
2886 | "score": 89.14702404133767,
2887 | "type": "exam"
2888 | },
2889 | {
2890 | "score": 11.85715160788611,
2891 | "type": "quiz"
2892 | },
2893 | {
2894 | "score": 87.70817474845785,
2895 | "type": "homework"
2896 | }
2897 | ]
2898 | }
2899 | {
2900 | "_id": 161,
2901 | "name": "Kurtis Jiles",
2902 | "scores": [
2903 | {
2904 | "score": 38.84932631249875,
2905 | "type": "exam"
2906 | },
2907 | {
2908 | "score": 75.6856190089661,
2909 | "type": "quiz"
2910 | },
2911 | {
2912 | "score": 54.8262895255851,
2913 | "type": "homework"
2914 | }
2915 | ]
2916 | }
2917 | {
2918 | "_id": 162,
2919 | "name": "Barbera Lippman",
2920 | "scores": [
2921 | {
2922 | "score": 10.1210778879972,
2923 | "type": "exam"
2924 | },
2925 | {
2926 | "score": 57.39236107118298,
2927 | "type": "quiz"
2928 | },
2929 | {
2930 | "score": 56.36039761834183,
2931 | "type": "homework"
2932 | }
2933 | ]
2934 | }
2935 | {
2936 | "_id": 163,
2937 | "name": "Dinah Sauve",
2938 | "scores": [
2939 | {
2940 | "score": 9.660849614328693,
2941 | "type": "exam"
2942 | },
2943 | {
2944 | "score": 0.710026283123355,
2945 | "type": "quiz"
2946 | },
2947 | {
2948 | "score": 64.85706587155985,
2949 | "type": "homework"
2950 | }
2951 | ]
2952 | }
2953 | {
2954 | "_id": 164,
2955 | "name": "Alica Pasley",
2956 | "scores": [
2957 | {
2958 | "score": 41.3852820348269,
2959 | "type": "exam"
2960 | },
2961 | {
2962 | "score": 87.0183839032626,
2963 | "type": "quiz"
2964 | },
2965 | {
2966 | "score": 37.22917544696978,
2967 | "type": "homework"
2968 | }
2969 | ]
2970 | }
2971 | {
2972 | "_id": 165,
2973 | "name": "Elizabet Kleine",
2974 | "scores": [
2975 | {
2976 | "score": 23.35599596646158,
2977 | "type": "exam"
2978 | },
2979 | {
2980 | "score": 45.42989961046475,
2981 | "type": "quiz"
2982 | },
2983 | {
2984 | "score": 59.29421526983006,
2985 | "type": "homework"
2986 | }
2987 | ]
2988 | }
2989 | {
2990 | "_id": 166,
2991 | "name": "Tawana Oberg",
2992 | "scores": [
2993 | {
2994 | "score": 79.24755285478162,
2995 | "type": "exam"
2996 | },
2997 | {
2998 | "score": 97.28127199858804,
2999 | "type": "quiz"
3000 | },
3001 | {
3002 | "score": 67.0528222080174,
3003 | "type": "homework"
3004 | }
3005 | ]
3006 | }
3007 | {
3008 | "_id": 167,
3009 | "name": "Malisa Jeanes",
3010 | "scores": [
3011 | {
3012 | "score": 40.68676040665008,
3013 | "type": "exam"
3014 | },
3015 | {
3016 | "score": 52.60826688242043,
3017 | "type": "quiz"
3018 | },
3019 | {
3020 | "score": 94.67979508129564,
3021 | "type": "homework"
3022 | }
3023 | ]
3024 | }
3025 | {
3026 | "_id": 168,
3027 | "name": "Joel Rueter",
3028 | "scores": [
3029 | {
3030 | "score": 21.78981361637835,
3031 | "type": "exam"
3032 | },
3033 | {
3034 | "score": 1.182228345865832,
3035 | "type": "quiz"
3036 | },
3037 | {
3038 | "score": 43.70843975739338,
3039 | "type": "homework"
3040 | }
3041 | ]
3042 | }
3043 | {
3044 | "_id": 169,
3045 | "name": "Tresa Sinha",
3046 | "scores": [
3047 | {
3048 | "score": 52.22632020277269,
3049 | "type": "exam"
3050 | },
3051 | {
3052 | "score": 65.68701091428014,
3053 | "type": "quiz"
3054 | },
3055 | {
3056 | "score": 86.80410157346574,
3057 | "type": "homework"
3058 | }
3059 | ]
3060 | }
3061 | {
3062 | "_id": 170,
3063 | "name": "Danika Loeffler",
3064 | "scores": [
3065 | {
3066 | "score": 80.13802901122058,
3067 | "type": "exam"
3068 | },
3069 | {
3070 | "score": 9.613195588726075,
3071 | "type": "quiz"
3072 | },
3073 | {
3074 | "score": 88.1580114788293,
3075 | "type": "homework"
3076 | }
3077 | ]
3078 | }
3079 | {
3080 | "_id": 171,
3081 | "name": "Chad Rahe",
3082 | "scores": [
3083 | {
3084 | "score": 81.24054522370292,
3085 | "type": "exam"
3086 | },
3087 | {
3088 | "score": 17.44929152365297,
3089 | "type": "quiz"
3090 | },
3091 | {
3092 | "score": 82.77870021356301,
3093 | "type": "homework"
3094 | }
3095 | ]
3096 | }
3097 | {
3098 | "_id": 172,
3099 | "name": "Joaquina Arbuckle",
3100 | "scores": [
3101 | {
3102 | "score": 35.43562368815135,
3103 | "type": "exam"
3104 | },
3105 | {
3106 | "score": 89.74640983145014,
3107 | "type": "quiz"
3108 | },
3109 | {
3110 | "score": 99.13868686848834,
3111 | "type": "homework"
3112 | }
3113 | ]
3114 | }
3115 | {
3116 | "_id": 173,
3117 | "name": "Vinnie Auerbach",
3118 | "scores": [
3119 | {
3120 | "score": 57.26312067710243,
3121 | "type": "exam"
3122 | },
3123 | {
3124 | "score": 20.63583040849144,
3125 | "type": "quiz"
3126 | },
3127 | {
3128 | "score": 77.02638482252677,
3129 | "type": "homework"
3130 | }
3131 | ]
3132 | }
3133 | {
3134 | "_id": 174,
3135 | "name": "Dusti Lemmond",
3136 | "scores": [
3137 | {
3138 | "score": 91.51968055194875,
3139 | "type": "exam"
3140 | },
3141 | {
3142 | "score": 50.37682668957234,
3143 | "type": "quiz"
3144 | },
3145 | {
3146 | "score": 51.53939113583016,
3147 | "type": "homework"
3148 | }
3149 | ]
3150 | }
3151 | {
3152 | "_id": 175,
3153 | "name": "Grady Zemke",
3154 | "scores": [
3155 | {
3156 | "score": 10.37320113489379,
3157 | "type": "exam"
3158 | },
3159 | {
3160 | "score": 10.51344428386458,
3161 | "type": "quiz"
3162 | },
3163 | {
3164 | "score": 85.47180043794621,
3165 | "type": "homework"
3166 | }
3167 | ]
3168 | }
3169 | {
3170 | "_id": 176,
3171 | "name": "Vina Matsunaga",
3172 | "scores": [
3173 | {
3174 | "score": 73.30054989074031,
3175 | "type": "exam"
3176 | },
3177 | {
3178 | "score": 4.21754550016783,
3179 | "type": "quiz"
3180 | },
3181 | {
3182 | "score": 56.31150858550771,
3183 | "type": "homework"
3184 | }
3185 | ]
3186 | }
3187 | {
3188 | "_id": 177,
3189 | "name": "Rubie Winton",
3190 | "scores": [
3191 | {
3192 | "score": 36.1767454709986,
3193 | "type": "exam"
3194 | },
3195 | {
3196 | "score": 89.39738121365069,
3197 | "type": "quiz"
3198 | },
3199 | {
3200 | "score": 90.83326208217305,
3201 | "type": "homework"
3202 | }
3203 | ]
3204 | }
3205 | {
3206 | "_id": 178,
3207 | "name": "Whitley Fears",
3208 | "scores": [
3209 | {
3210 | "score": 20.84454374176408,
3211 | "type": "exam"
3212 | },
3213 | {
3214 | "score": 57.14851257871499,
3215 | "type": "quiz"
3216 | },
3217 | {
3218 | "score": 99.77237745070993,
3219 | "type": "homework"
3220 | }
3221 | ]
3222 | }
3223 | {
3224 | "_id": 179,
3225 | "name": "Gena Riccio",
3226 | "scores": [
3227 | {
3228 | "score": 81.49070346172086,
3229 | "type": "exam"
3230 | },
3231 | {
3232 | "score": 23.12653402998139,
3233 | "type": "quiz"
3234 | },
3235 | {
3236 | "score": 96.54590960898932,
3237 | "type": "homework"
3238 | }
3239 | ]
3240 | }
3241 | {
3242 | "_id": 180,
3243 | "name": "Kim Xu",
3244 | "scores": [
3245 | {
3246 | "score": 29.1596029917098,
3247 | "type": "exam"
3248 | },
3249 | {
3250 | "score": 74.41836270655918,
3251 | "type": "quiz"
3252 | },
3253 | {
3254 | "score": 56.64965514703727,
3255 | "type": "homework"
3256 | }
3257 | ]
3258 | }
3259 | {
3260 | "_id": 181,
3261 | "name": "Merissa Mann",
3262 | "scores": [
3263 | {
3264 | "score": 0.7300279717432967,
3265 | "type": "exam"
3266 | },
3267 | {
3268 | "score": 39.49170592908128,
3269 | "type": "quiz"
3270 | },
3271 | {
3272 | "score": 60.49619334485811,
3273 | "type": "homework"
3274 | }
3275 | ]
3276 | }
3277 | {
3278 | "_id": 182,
3279 | "name": "Jenise Mcguffie",
3280 | "scores": [
3281 | {
3282 | "score": 83.68438201130127,
3283 | "type": "exam"
3284 | },
3285 | {
3286 | "score": 73.79931763764928,
3287 | "type": "quiz"
3288 | },
3289 | {
3290 | "score": 89.57200947426745,
3291 | "type": "homework"
3292 | }
3293 | ]
3294 | }
3295 | {
3296 | "_id": 183,
3297 | "name": "Cody Strouth",
3298 | "scores": [
3299 | {
3300 | "score": 32.99854612126559,
3301 | "type": "exam"
3302 | },
3303 | {
3304 | "score": 78.61720316992681,
3305 | "type": "quiz"
3306 | },
3307 | {
3308 | "score": 89.62847560459466,
3309 | "type": "homework"
3310 | }
3311 | ]
3312 | }
3313 | {
3314 | "_id": 184,
3315 | "name": "Harriett Velarde",
3316 | "scores": [
3317 | {
3318 | "score": 41.47988283148075,
3319 | "type": "exam"
3320 | },
3321 | {
3322 | "score": 95.69493673358075,
3323 | "type": "quiz"
3324 | },
3325 | {
3326 | "score": 83.03916048182315,
3327 | "type": "homework"
3328 | }
3329 | ]
3330 | }
3331 | {
3332 | "_id": 185,
3333 | "name": "Kam Senters",
3334 | "scores": [
3335 | {
3336 | "score": 49.8822537074033,
3337 | "type": "exam"
3338 | },
3339 | {
3340 | "score": 45.29515361387067,
3341 | "type": "quiz"
3342 | },
3343 | {
3344 | "score": 68.88048980292801,
3345 | "type": "homework"
3346 | }
3347 | ]
3348 | }
3349 | {
3350 | "_id": 186,
3351 | "name": "Leonida Lafond",
3352 | "scores": [
3353 | {
3354 | "score": 8.125073097960179,
3355 | "type": "exam"
3356 | },
3357 | {
3358 | "score": 0.2017888852605676,
3359 | "type": "quiz"
3360 | },
3361 | {
3362 | "score": 90.13081857264544,
3363 | "type": "homework"
3364 | }
3365 | ]
3366 | }
3367 | {
3368 | "_id": 187,
3369 | "name": "Devorah Smartt",
3370 | "scores": [
3371 | {
3372 | "score": 23.94616611315642,
3373 | "type": "exam"
3374 | },
3375 | {
3376 | "score": 13.27371116063025,
3377 | "type": "quiz"
3378 | },
3379 | {
3380 | "score": 63.17281121561749,
3381 | "type": "homework"
3382 | }
3383 | ]
3384 | }
3385 | {
3386 | "_id": 188,
3387 | "name": "Leola Lundin",
3388 | "scores": [
3389 | {
3390 | "score": 60.314725741828,
3391 | "type": "exam"
3392 | },
3393 | {
3394 | "score": 41.12327471818652,
3395 | "type": "quiz"
3396 | },
3397 | {
3398 | "score": 74.8699176311771,
3399 | "type": "homework"
3400 | }
3401 | ]
3402 | }
3403 | {
3404 | "_id": 189,
3405 | "name": "Tonia Surace",
3406 | "scores": [
3407 | {
3408 | "score": 67.93405589675187,
3409 | "type": "exam"
3410 | },
3411 | {
3412 | "score": 31.49721116485943,
3413 | "type": "quiz"
3414 | },
3415 | {
3416 | "score": 82.36495908047985,
3417 | "type": "homework"
3418 | }
3419 | ]
3420 | }
3421 | {
3422 | "_id": 190,
3423 | "name": "Adrien Renda",
3424 | "scores": [
3425 | {
3426 | "score": 64.16109192679477,
3427 | "type": "exam"
3428 | },
3429 | {
3430 | "score": 66.93730600935531,
3431 | "type": "quiz"
3432 | },
3433 | {
3434 | "score": 96.0560340227047,
3435 | "type": "homework"
3436 | }
3437 | ]
3438 | }
3439 | {
3440 | "_id": 191,
3441 | "name": "Efrain Claw",
3442 | "scores": [
3443 | {
3444 | "score": 94.67153825229884,
3445 | "type": "exam"
3446 | },
3447 | {
3448 | "score": 82.30087932110595,
3449 | "type": "quiz"
3450 | },
3451 | {
3452 | "score": 75.86075840047938,
3453 | "type": "homework"
3454 | }
3455 | ]
3456 | }
3457 | {
3458 | "_id": 192,
3459 | "name": "Len Treiber",
3460 | "scores": [
3461 | {
3462 | "score": 39.19832917406515,
3463 | "type": "exam"
3464 | },
3465 | {
3466 | "score": 98.71679252899352,
3467 | "type": "quiz"
3468 | },
3469 | {
3470 | "score": 44.8228929481132,
3471 | "type": "homework"
3472 | }
3473 | ]
3474 | }
3475 | {
3476 | "_id": 193,
3477 | "name": "Mariela Sherer",
3478 | "scores": [
3479 | {
3480 | "score": 47.67196715489599,
3481 | "type": "exam"
3482 | },
3483 | {
3484 | "score": 41.55743490493954,
3485 | "type": "quiz"
3486 | },
3487 | {
3488 | "score": 70.4612811769744,
3489 | "type": "homework"
3490 | }
3491 | ]
3492 | }
3493 | {
3494 | "_id": 194,
3495 | "name": "Echo Pippins",
3496 | "scores": [
3497 | {
3498 | "score": 18.09013691507853,
3499 | "type": "exam"
3500 | },
3501 | {
3502 | "score": 35.00306967250408,
3503 | "type": "quiz"
3504 | },
3505 | {
3506 | "score": 80.17965154316731,
3507 | "type": "homework"
3508 | }
3509 | ]
3510 | }
3511 | {
3512 | "_id": 195,
3513 | "name": "Linnie Weigel",
3514 | "scores": [
3515 | {
3516 | "score": 52.44578368517977,
3517 | "type": "exam"
3518 | },
3519 | {
3520 | "score": 90.7775054046383,
3521 | "type": "quiz"
3522 | },
3523 | {
3524 | "score": 11.75008382913026,
3525 | "type": "homework"
3526 | }
3527 | ]
3528 | }
3529 | {
3530 | "_id": 196,
3531 | "name": "Santiago Dollins",
3532 | "scores": [
3533 | {
3534 | "score": 52.04052571137036,
3535 | "type": "exam"
3536 | },
3537 | {
3538 | "score": 33.63300076481705,
3539 | "type": "quiz"
3540 | },
3541 | {
3542 | "score": 78.79257377604428,
3543 | "type": "homework"
3544 | }
3545 | ]
3546 | }
3547 | {
3548 | "_id": 197,
3549 | "name": "Tonisha Games",
3550 | "scores": [
3551 | {
3552 | "score": 38.51269589995049,
3553 | "type": "exam"
3554 | },
3555 | {
3556 | "score": 31.16287577231703,
3557 | "type": "quiz"
3558 | },
3559 | {
3560 | "score": 79.15856355963004,
3561 | "type": "homework"
3562 | }
3563 | ]
3564 | }
3565 | {
3566 | "_id": 198,
3567 | "name": "Timothy Harrod",
3568 | "scores": [
3569 | {
3570 | "score": 11.9075674046519,
3571 | "type": "exam"
3572 | },
3573 | {
3574 | "score": 20.51879961777022,
3575 | "type": "quiz"
3576 | },
3577 | {
3578 | "score": 64.85650354990375,
3579 | "type": "homework"
3580 | }
3581 | ]
3582 | }
3583 | {
3584 | "_id": 199,
3585 | "name": "Rae Kohout",
3586 | "scores": [
3587 | {
3588 | "score": 82.11742562118049,
3589 | "type": "exam"
3590 | },
3591 | {
3592 | "score": 49.61295450928224,
3593 | "type": "quiz"
3594 | },
3595 | {
3596 | "score": 28.86823689842918,
3597 | "type": "homework"
3598 | }
3599 | ]
3600 | }
3601 |
--------------------------------------------------------------------------------
/Databases/MongoDB/tweets.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sureshmelvinsigera/CSC-424-Advanced-Database-Management-Systems/f695db4548229398f9fe96022c8bfb4c8e9664bf/Databases/MongoDB/tweets.zip
--------------------------------------------------------------------------------
/Databases/MongoDB/users.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "name": "Max",
4 | "hobbies": [
5 | {
6 | "title": "Sports",
7 | "frequency": 3
8 | },
9 | {
10 | "title": "Cooking",
11 | "frequency": 6
12 | }
13 | ],
14 | "phone": 131782734
15 | },
16 | {
17 | "name": "Manuel",
18 | "hobbies": [
19 | {
20 | "title": "Cooking",
21 | "frequency": 5
22 | },
23 | {
24 | "title": "Cars",
25 | "frequency": 2
26 | }
27 | ],
28 | "phone": "012177972",
29 | "age": 30
30 | },
31 | {
32 | "name": "Anna",
33 | "hobbies": [
34 | {
35 | "title": "Sports",
36 | "frequency": 2
37 | },
38 | {
39 | "title": "Yoga",
40 | "frequency": 3
41 | }
42 | ],
43 | "phone": "80811987291",
44 | "age": null
45 | },
46 | {
47 | "name": "Chris",
48 | "hobbies": [
49 | "Sports",
50 | "Cooking",
51 | "Hiking"
52 | ]
53 | }
54 | ]
55 |
--------------------------------------------------------------------------------
/Databases/PostgreSQL/dvdrental.tar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sureshmelvinsigera/CSC-424-Advanced-Database-Management-Systems/f695db4548229398f9fe96022c8bfb4c8e9664bf/Databases/PostgreSQL/dvdrental.tar
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | GNU GENERAL PUBLIC LICENSE
2 | Version 3, 29 June 2007
3 |
4 | Copyright (C) 2007 Free Software Foundation, Inc.
5 | Everyone is permitted to copy and distribute verbatim copies
6 | of this license document, but changing it is not allowed.
7 |
8 | Preamble
9 |
10 | The GNU General Public License is a free, copyleft license for
11 | software and other kinds of works.
12 |
13 | The licenses for most software and other practical works are designed
14 | to take away your freedom to share and change the works. By contrast,
15 | the GNU General Public License is intended to guarantee your freedom to
16 | share and change all versions of a program--to make sure it remains free
17 | software for all its users. We, the Free Software Foundation, use the
18 | GNU General Public License for most of our software; it applies also to
19 | any other work released this way by its authors. You can apply it to
20 | your programs, too.
21 |
22 | When we speak of free software, we are referring to freedom, not
23 | price. Our General Public Licenses are designed to make sure that you
24 | have the freedom to distribute copies of free software (and charge for
25 | them if you wish), that you receive source code or can get it if you
26 | want it, that you can change the software or use pieces of it in new
27 | free programs, and that you know you can do these things.
28 |
29 | To protect your rights, we need to prevent others from denying you
30 | these rights or asking you to surrender the rights. Therefore, you have
31 | certain responsibilities if you distribute copies of the software, or if
32 | you modify it: responsibilities to respect the freedom of others.
33 |
34 | For example, if you distribute copies of such a program, whether
35 | gratis or for a fee, you must pass on to the recipients the same
36 | freedoms that you received. You must make sure that they, too, receive
37 | or can get the source code. And you must show them these terms so they
38 | know their rights.
39 |
40 | Developers that use the GNU GPL protect your rights with two steps:
41 | (1) assert copyright on the software, and (2) offer you this License
42 | giving you legal permission to copy, distribute and/or modify it.
43 |
44 | For the developers' and authors' protection, the GPL clearly explains
45 | that there is no warranty for this free software. For both users' and
46 | authors' sake, the GPL requires that modified versions be marked as
47 | changed, so that their problems will not be attributed erroneously to
48 | authors of previous versions.
49 |
50 | Some devices are designed to deny users access to install or run
51 | modified versions of the software inside them, although the manufacturer
52 | can do so. This is fundamentally incompatible with the aim of
53 | protecting users' freedom to change the software. The systematic
54 | pattern of such abuse occurs in the area of products for individuals to
55 | use, which is precisely where it is most unacceptable. Therefore, we
56 | have designed this version of the GPL to prohibit the practice for those
57 | products. If such problems arise substantially in other domains, we
58 | stand ready to extend this provision to those domains in future versions
59 | of the GPL, as needed to protect the freedom of users.
60 |
61 | Finally, every program is threatened constantly by software patents.
62 | States should not allow patents to restrict development and use of
63 | software on general-purpose computers, but in those that do, we wish to
64 | avoid the special danger that patents applied to a free program could
65 | make it effectively proprietary. To prevent this, the GPL assures that
66 | patents cannot be used to render the program non-free.
67 |
68 | The precise terms and conditions for copying, distribution and
69 | modification follow.
70 |
71 | TERMS AND CONDITIONS
72 |
73 | 0. Definitions.
74 |
75 | "This License" refers to version 3 of the GNU General Public License.
76 |
77 | "Copyright" also means copyright-like laws that apply to other kinds of
78 | works, such as semiconductor masks.
79 |
80 | "The Program" refers to any copyrightable work licensed under this
81 | License. Each licensee is addressed as "you". "Licensees" and
82 | "recipients" may be individuals or organizations.
83 |
84 | To "modify" a work means to copy from or adapt all or part of the work
85 | in a fashion requiring copyright permission, other than the making of an
86 | exact copy. The resulting work is called a "modified version" of the
87 | earlier work or a work "based on" the earlier work.
88 |
89 | A "covered work" means either the unmodified Program or a work based
90 | on the Program.
91 |
92 | To "propagate" a work means to do anything with it that, without
93 | permission, would make you directly or secondarily liable for
94 | infringement under applicable copyright law, except executing it on a
95 | computer or modifying a private copy. Propagation includes copying,
96 | distribution (with or without modification), making available to the
97 | public, and in some countries other activities as well.
98 |
99 | To "convey" a work means any kind of propagation that enables other
100 | parties to make or receive copies. Mere interaction with a user through
101 | a computer network, with no transfer of a copy, is not conveying.
102 |
103 | An interactive user interface displays "Appropriate Legal Notices"
104 | to the extent that it includes a convenient and prominently visible
105 | feature that (1) displays an appropriate copyright notice, and (2)
106 | tells the user that there is no warranty for the work (except to the
107 | extent that warranties are provided), that licensees may convey the
108 | work under this License, and how to view a copy of this License. If
109 | the interface presents a list of user commands or options, such as a
110 | menu, a prominent item in the list meets this criterion.
111 |
112 | 1. Source Code.
113 |
114 | The "source code" for a work means the preferred form of the work
115 | for making modifications to it. "Object code" means any non-source
116 | form of a work.
117 |
118 | A "Standard Interface" means an interface that either is an official
119 | standard defined by a recognized standards body, or, in the case of
120 | interfaces specified for a particular programming language, one that
121 | is widely used among developers working in that language.
122 |
123 | The "System Libraries" of an executable work include anything, other
124 | than the work as a whole, that (a) is included in the normal form of
125 | packaging a Major Component, but which is not part of that Major
126 | Component, and (b) serves only to enable use of the work with that
127 | Major Component, or to implement a Standard Interface for which an
128 | implementation is available to the public in source code form. A
129 | "Major Component", in this context, means a major essential component
130 | (kernel, window system, and so on) of the specific operating system
131 | (if any) on which the executable work runs, or a compiler used to
132 | produce the work, or an object code interpreter used to run it.
133 |
134 | The "Corresponding Source" for a work in object code form means all
135 | the source code needed to generate, install, and (for an executable
136 | work) run the object code and to modify the work, including scripts to
137 | control those activities. However, it does not include the work's
138 | System Libraries, or general-purpose tools or generally available free
139 | programs which are used unmodified in performing those activities but
140 | which are not part of the work. For example, Corresponding Source
141 | includes interface definition files associated with source files for
142 | the work, and the source code for shared libraries and dynamically
143 | linked subprograms that the work is specifically designed to require,
144 | such as by intimate data communication or control flow between those
145 | subprograms and other parts of the work.
146 |
147 | The Corresponding Source need not include anything that users
148 | can regenerate automatically from other parts of the Corresponding
149 | Source.
150 |
151 | The Corresponding Source for a work in source code form is that
152 | same work.
153 |
154 | 2. Basic Permissions.
155 |
156 | All rights granted under this License are granted for the term of
157 | copyright on the Program, and are irrevocable provided the stated
158 | conditions are met. This License explicitly affirms your unlimited
159 | permission to run the unmodified Program. The output from running a
160 | covered work is covered by this License only if the output, given its
161 | content, constitutes a covered work. This License acknowledges your
162 | rights of fair use or other equivalent, as provided by copyright law.
163 |
164 | You may make, run and propagate covered works that you do not
165 | convey, without conditions so long as your license otherwise remains
166 | in force. You may convey covered works to others for the sole purpose
167 | of having them make modifications exclusively for you, or provide you
168 | with facilities for running those works, provided that you comply with
169 | the terms of this License in conveying all material for which you do
170 | not control copyright. Those thus making or running the covered works
171 | for you must do so exclusively on your behalf, under your direction
172 | and control, on terms that prohibit them from making any copies of
173 | your copyrighted material outside their relationship with you.
174 |
175 | Conveying under any other circumstances is permitted solely under
176 | the conditions stated below. Sublicensing is not allowed; section 10
177 | makes it unnecessary.
178 |
179 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
180 |
181 | No covered work shall be deemed part of an effective technological
182 | measure under any applicable law fulfilling obligations under article
183 | 11 of the WIPO copyright treaty adopted on 20 December 1996, or
184 | similar laws prohibiting or restricting circumvention of such
185 | measures.
186 |
187 | When you convey a covered work, you waive any legal power to forbid
188 | circumvention of technological measures to the extent such circumvention
189 | is effected by exercising rights under this License with respect to
190 | the covered work, and you disclaim any intention to limit operation or
191 | modification of the work as a means of enforcing, against the work's
192 | users, your or third parties' legal rights to forbid circumvention of
193 | technological measures.
194 |
195 | 4. Conveying Verbatim Copies.
196 |
197 | You may convey verbatim copies of the Program's source code as you
198 | receive it, in any medium, provided that you conspicuously and
199 | appropriately publish on each copy an appropriate copyright notice;
200 | keep intact all notices stating that this License and any
201 | non-permissive terms added in accord with section 7 apply to the code;
202 | keep intact all notices of the absence of any warranty; and give all
203 | recipients a copy of this License along with the Program.
204 |
205 | You may charge any price or no price for each copy that you convey,
206 | and you may offer support or warranty protection for a fee.
207 |
208 | 5. Conveying Modified Source Versions.
209 |
210 | You may convey a work based on the Program, or the modifications to
211 | produce it from the Program, in the form of source code under the
212 | terms of section 4, provided that you also meet all of these conditions:
213 |
214 | a) The work must carry prominent notices stating that you modified
215 | it, and giving a relevant date.
216 |
217 | b) The work must carry prominent notices stating that it is
218 | released under this License and any conditions added under section
219 | 7. This requirement modifies the requirement in section 4 to
220 | "keep intact all notices".
221 |
222 | c) You must license the entire work, as a whole, under this
223 | License to anyone who comes into possession of a copy. This
224 | License will therefore apply, along with any applicable section 7
225 | additional terms, to the whole of the work, and all its parts,
226 | regardless of how they are packaged. This License gives no
227 | permission to license the work in any other way, but it does not
228 | invalidate such permission if you have separately received it.
229 |
230 | d) If the work has interactive user interfaces, each must display
231 | Appropriate Legal Notices; however, if the Program has interactive
232 | interfaces that do not display Appropriate Legal Notices, your
233 | work need not make them do so.
234 |
235 | A compilation of a covered work with other separate and independent
236 | works, which are not by their nature extensions of the covered work,
237 | and which are not combined with it such as to form a larger program,
238 | in or on a volume of a storage or distribution medium, is called an
239 | "aggregate" if the compilation and its resulting copyright are not
240 | used to limit the access or legal rights of the compilation's users
241 | beyond what the individual works permit. Inclusion of a covered work
242 | in an aggregate does not cause this License to apply to the other
243 | parts of the aggregate.
244 |
245 | 6. Conveying Non-Source Forms.
246 |
247 | You may convey a covered work in object code form under the terms
248 | of sections 4 and 5, provided that you also convey the
249 | machine-readable Corresponding Source under the terms of this License,
250 | in one of these ways:
251 |
252 | a) Convey the object code in, or embodied in, a physical product
253 | (including a physical distribution medium), accompanied by the
254 | Corresponding Source fixed on a durable physical medium
255 | customarily used for software interchange.
256 |
257 | b) Convey the object code in, or embodied in, a physical product
258 | (including a physical distribution medium), accompanied by a
259 | written offer, valid for at least three years and valid for as
260 | long as you offer spare parts or customer support for that product
261 | model, to give anyone who possesses the object code either (1) a
262 | copy of the Corresponding Source for all the software in the
263 | product that is covered by this License, on a durable physical
264 | medium customarily used for software interchange, for a price no
265 | more than your reasonable cost of physically performing this
266 | conveying of source, or (2) access to copy the
267 | Corresponding Source from a network server at no charge.
268 |
269 | c) Convey individual copies of the object code with a copy of the
270 | written offer to provide the Corresponding Source. This
271 | alternative is allowed only occasionally and noncommercially, and
272 | only if you received the object code with such an offer, in accord
273 | with subsection 6b.
274 |
275 | d) Convey the object code by offering access from a designated
276 | place (gratis or for a charge), and offer equivalent access to the
277 | Corresponding Source in the same way through the same place at no
278 | further charge. You need not require recipients to copy the
279 | Corresponding Source along with the object code. If the place to
280 | copy the object code is a network server, the Corresponding Source
281 | may be on a different server (operated by you or a third party)
282 | that supports equivalent copying facilities, provided you maintain
283 | clear directions next to the object code saying where to find the
284 | Corresponding Source. Regardless of what server hosts the
285 | Corresponding Source, you remain obligated to ensure that it is
286 | available for as long as needed to satisfy these requirements.
287 |
288 | e) Convey the object code using peer-to-peer transmission, provided
289 | you inform other peers where the object code and Corresponding
290 | Source of the work are being offered to the general public at no
291 | charge under subsection 6d.
292 |
293 | A separable portion of the object code, whose source code is excluded
294 | from the Corresponding Source as a System Library, need not be
295 | included in conveying the object code work.
296 |
297 | A "User Product" is either (1) a "consumer product", which means any
298 | tangible personal property which is normally used for personal, family,
299 | or household purposes, or (2) anything designed or sold for incorporation
300 | into a dwelling. In determining whether a product is a consumer product,
301 | doubtful cases shall be resolved in favor of coverage. For a particular
302 | product received by a particular user, "normally used" refers to a
303 | typical or common use of that class of product, regardless of the status
304 | of the particular user or of the way in which the particular user
305 | actually uses, or expects or is expected to use, the product. A product
306 | is a consumer product regardless of whether the product has substantial
307 | commercial, industrial or non-consumer uses, unless such uses represent
308 | the only significant mode of use of the product.
309 |
310 | "Installation Information" for a User Product means any methods,
311 | procedures, authorization keys, or other information required to install
312 | and execute modified versions of a covered work in that User Product from
313 | a modified version of its Corresponding Source. The information must
314 | suffice to ensure that the continued functioning of the modified object
315 | code is in no case prevented or interfered with solely because
316 | modification has been made.
317 |
318 | If you convey an object code work under this section in, or with, or
319 | specifically for use in, a User Product, and the conveying occurs as
320 | part of a transaction in which the right of possession and use of the
321 | User Product is transferred to the recipient in perpetuity or for a
322 | fixed term (regardless of how the transaction is characterized), the
323 | Corresponding Source conveyed under this section must be accompanied
324 | by the Installation Information. But this requirement does not apply
325 | if neither you nor any third party retains the ability to install
326 | modified object code on the User Product (for example, the work has
327 | been installed in ROM).
328 |
329 | The requirement to provide Installation Information does not include a
330 | requirement to continue to provide support service, warranty, or updates
331 | for a work that has been modified or installed by the recipient, or for
332 | the User Product in which it has been modified or installed. Access to a
333 | network may be denied when the modification itself materially and
334 | adversely affects the operation of the network or violates the rules and
335 | protocols for communication across the network.
336 |
337 | Corresponding Source conveyed, and Installation Information provided,
338 | in accord with this section must be in a format that is publicly
339 | documented (and with an implementation available to the public in
340 | source code form), and must require no special password or key for
341 | unpacking, reading or copying.
342 |
343 | 7. Additional Terms.
344 |
345 | "Additional permissions" are terms that supplement the terms of this
346 | License by making exceptions from one or more of its conditions.
347 | Additional permissions that are applicable to the entire Program shall
348 | be treated as though they were included in this License, to the extent
349 | that they are valid under applicable law. If additional permissions
350 | apply only to part of the Program, that part may be used separately
351 | under those permissions, but the entire Program remains governed by
352 | this License without regard to the additional permissions.
353 |
354 | When you convey a copy of a covered work, you may at your option
355 | remove any additional permissions from that copy, or from any part of
356 | it. (Additional permissions may be written to require their own
357 | removal in certain cases when you modify the work.) You may place
358 | additional permissions on material, added by you to a covered work,
359 | for which you have or can give appropriate copyright permission.
360 |
361 | Notwithstanding any other provision of this License, for material you
362 | add to a covered work, you may (if authorized by the copyright holders of
363 | that material) supplement the terms of this License with terms:
364 |
365 | a) Disclaiming warranty or limiting liability differently from the
366 | terms of sections 15 and 16 of this License; or
367 |
368 | b) Requiring preservation of specified reasonable legal notices or
369 | author attributions in that material or in the Appropriate Legal
370 | Notices displayed by works containing it; or
371 |
372 | c) Prohibiting misrepresentation of the origin of that material, or
373 | requiring that modified versions of such material be marked in
374 | reasonable ways as different from the original version; or
375 |
376 | d) Limiting the use for publicity purposes of names of licensors or
377 | authors of the material; or
378 |
379 | e) Declining to grant rights under trademark law for use of some
380 | trade names, trademarks, or service marks; or
381 |
382 | f) Requiring indemnification of licensors and authors of that
383 | material by anyone who conveys the material (or modified versions of
384 | it) with contractual assumptions of liability to the recipient, for
385 | any liability that these contractual assumptions directly impose on
386 | those licensors and authors.
387 |
388 | All other non-permissive additional terms are considered "further
389 | restrictions" within the meaning of section 10. If the Program as you
390 | received it, or any part of it, contains a notice stating that it is
391 | governed by this License along with a term that is a further
392 | restriction, you may remove that term. If a license document contains
393 | a further restriction but permits relicensing or conveying under this
394 | License, you may add to a covered work material governed by the terms
395 | of that license document, provided that the further restriction does
396 | not survive such relicensing or conveying.
397 |
398 | If you add terms to a covered work in accord with this section, you
399 | must place, in the relevant source files, a statement of the
400 | additional terms that apply to those files, or a notice indicating
401 | where to find the applicable terms.
402 |
403 | Additional terms, permissive or non-permissive, may be stated in the
404 | form of a separately written license, or stated as exceptions;
405 | the above requirements apply either way.
406 |
407 | 8. Termination.
408 |
409 | You may not propagate or modify a covered work except as expressly
410 | provided under this License. Any attempt otherwise to propagate or
411 | modify it is void, and will automatically terminate your rights under
412 | this License (including any patent licenses granted under the third
413 | paragraph of section 11).
414 |
415 | However, if you cease all violation of this License, then your
416 | license from a particular copyright holder is reinstated (a)
417 | provisionally, unless and until the copyright holder explicitly and
418 | finally terminates your license, and (b) permanently, if the copyright
419 | holder fails to notify you of the violation by some reasonable means
420 | prior to 60 days after the cessation.
421 |
422 | Moreover, your license from a particular copyright holder is
423 | reinstated permanently if the copyright holder notifies you of the
424 | violation by some reasonable means, this is the first time you have
425 | received notice of violation of this License (for any work) from that
426 | copyright holder, and you cure the violation prior to 30 days after
427 | your receipt of the notice.
428 |
429 | Termination of your rights under this section does not terminate the
430 | licenses of parties who have received copies or rights from you under
431 | this License. If your rights have been terminated and not permanently
432 | reinstated, you do not qualify to receive new licenses for the same
433 | material under section 10.
434 |
435 | 9. Acceptance Not Required for Having Copies.
436 |
437 | You are not required to accept this License in order to receive or
438 | run a copy of the Program. Ancillary propagation of a covered work
439 | occurring solely as a consequence of using peer-to-peer transmission
440 | to receive a copy likewise does not require acceptance. However,
441 | nothing other than this License grants you permission to propagate or
442 | modify any covered work. These actions infringe copyright if you do
443 | not accept this License. Therefore, by modifying or propagating a
444 | covered work, you indicate your acceptance of this License to do so.
445 |
446 | 10. Automatic Licensing of Downstream Recipients.
447 |
448 | Each time you convey a covered work, the recipient automatically
449 | receives a license from the original licensors, to run, modify and
450 | propagate that work, subject to this License. You are not responsible
451 | for enforcing compliance by third parties with this License.
452 |
453 | An "entity transaction" is a transaction transferring control of an
454 | organization, or substantially all assets of one, or subdividing an
455 | organization, or merging organizations. If propagation of a covered
456 | work results from an entity transaction, each party to that
457 | transaction who receives a copy of the work also receives whatever
458 | licenses to the work the party's predecessor in interest had or could
459 | give under the previous paragraph, plus a right to possession of the
460 | Corresponding Source of the work from the predecessor in interest, if
461 | the predecessor has it or can get it with reasonable efforts.
462 |
463 | You may not impose any further restrictions on the exercise of the
464 | rights granted or affirmed under this License. For example, you may
465 | not impose a license fee, royalty, or other charge for exercise of
466 | rights granted under this License, and you may not initiate litigation
467 | (including a cross-claim or counterclaim in a lawsuit) alleging that
468 | any patent claim is infringed by making, using, selling, offering for
469 | sale, or importing the Program or any portion of it.
470 |
471 | 11. Patents.
472 |
473 | A "contributor" is a copyright holder who authorizes use under this
474 | License of the Program or a work on which the Program is based. The
475 | work thus licensed is called the contributor's "contributor version".
476 |
477 | A contributor's "essential patent claims" are all patent claims
478 | owned or controlled by the contributor, whether already acquired or
479 | hereafter acquired, that would be infringed by some manner, permitted
480 | by this License, of making, using, or selling its contributor version,
481 | but do not include claims that would be infringed only as a
482 | consequence of further modification of the contributor version. For
483 | purposes of this definition, "control" includes the right to grant
484 | patent sublicenses in a manner consistent with the requirements of
485 | this License.
486 |
487 | Each contributor grants you a non-exclusive, worldwide, royalty-free
488 | patent license under the contributor's essential patent claims, to
489 | make, use, sell, offer for sale, import and otherwise run, modify and
490 | propagate the contents of its contributor version.
491 |
492 | In the following three paragraphs, a "patent license" is any express
493 | agreement or commitment, however denominated, not to enforce a patent
494 | (such as an express permission to practice a patent or covenant not to
495 | sue for patent infringement). To "grant" such a patent license to a
496 | party means to make such an agreement or commitment not to enforce a
497 | patent against the party.
498 |
499 | If you convey a covered work, knowingly relying on a patent license,
500 | and the Corresponding Source of the work is not available for anyone
501 | to copy, free of charge and under the terms of this License, through a
502 | publicly available network server or other readily accessible means,
503 | then you must either (1) cause the Corresponding Source to be so
504 | available, or (2) arrange to deprive yourself of the benefit of the
505 | patent license for this particular work, or (3) arrange, in a manner
506 | consistent with the requirements of this License, to extend the patent
507 | license to downstream recipients. "Knowingly relying" means you have
508 | actual knowledge that, but for the patent license, your conveying the
509 | covered work in a country, or your recipient's use of the covered work
510 | in a country, would infringe one or more identifiable patents in that
511 | country that you have reason to believe are valid.
512 |
513 | If, pursuant to or in connection with a single transaction or
514 | arrangement, you convey, or propagate by procuring conveyance of, a
515 | covered work, and grant a patent license to some of the parties
516 | receiving the covered work authorizing them to use, propagate, modify
517 | or convey a specific copy of the covered work, then the patent license
518 | you grant is automatically extended to all recipients of the covered
519 | work and works based on it.
520 |
521 | A patent license is "discriminatory" if it does not include within
522 | the scope of its coverage, prohibits the exercise of, or is
523 | conditioned on the non-exercise of one or more of the rights that are
524 | specifically granted under this License. You may not convey a covered
525 | work if you are a party to an arrangement with a third party that is
526 | in the business of distributing software, under which you make payment
527 | to the third party based on the extent of your activity of conveying
528 | the work, and under which the third party grants, to any of the
529 | parties who would receive the covered work from you, a discriminatory
530 | patent license (a) in connection with copies of the covered work
531 | conveyed by you (or copies made from those copies), or (b) primarily
532 | for and in connection with specific products or compilations that
533 | contain the covered work, unless you entered into that arrangement,
534 | or that patent license was granted, prior to 28 March 2007.
535 |
536 | Nothing in this License shall be construed as excluding or limiting
537 | any implied license or other defenses to infringement that may
538 | otherwise be available to you under applicable patent law.
539 |
540 | 12. No Surrender of Others' Freedom.
541 |
542 | If conditions are imposed on you (whether by court order, agreement or
543 | otherwise) that contradict the conditions of this License, they do not
544 | excuse you from the conditions of this License. If you cannot convey a
545 | covered work so as to satisfy simultaneously your obligations under this
546 | License and any other pertinent obligations, then as a consequence you may
547 | not convey it at all. For example, if you agree to terms that obligate you
548 | to collect a royalty for further conveying from those to whom you convey
549 | the Program, the only way you could satisfy both those terms and this
550 | License would be to refrain entirely from conveying the Program.
551 |
552 | 13. Use with the GNU Affero General Public License.
553 |
554 | Notwithstanding any other provision of this License, you have
555 | permission to link or combine any covered work with a work licensed
556 | under version 3 of the GNU Affero General Public License into a single
557 | combined work, and to convey the resulting work. The terms of this
558 | License will continue to apply to the part which is the covered work,
559 | but the special requirements of the GNU Affero General Public License,
560 | section 13, concerning interaction through a network will apply to the
561 | combination as such.
562 |
563 | 14. Revised Versions of this License.
564 |
565 | The Free Software Foundation may publish revised and/or new versions of
566 | the GNU General Public License from time to time. Such new versions will
567 | be similar in spirit to the present version, but may differ in detail to
568 | address new problems or concerns.
569 |
570 | Each version is given a distinguishing version number. If the
571 | Program specifies that a certain numbered version of the GNU General
572 | Public License "or any later version" applies to it, you have the
573 | option of following the terms and conditions either of that numbered
574 | version or of any later version published by the Free Software
575 | Foundation. If the Program does not specify a version number of the
576 | GNU General Public License, you may choose any version ever published
577 | by the Free Software Foundation.
578 |
579 | If the Program specifies that a proxy can decide which future
580 | versions of the GNU General Public License can be used, that proxy's
581 | public statement of acceptance of a version permanently authorizes you
582 | to choose that version for the Program.
583 |
584 | Later license versions may give you additional or different
585 | permissions. However, no additional obligations are imposed on any
586 | author or copyright holder as a result of your choosing to follow a
587 | later version.
588 |
589 | 15. Disclaimer of Warranty.
590 |
591 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
592 | APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
593 | HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
594 | OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
595 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
596 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
597 | IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
598 | ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
599 |
600 | 16. Limitation of Liability.
601 |
602 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
603 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
604 | THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
605 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
606 | USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
607 | DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
608 | PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
609 | EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
610 | SUCH DAMAGES.
611 |
612 | 17. Interpretation of Sections 15 and 16.
613 |
614 | If the disclaimer of warranty and limitation of liability provided
615 | above cannot be given local legal effect according to their terms,
616 | reviewing courts shall apply local law that most closely approximates
617 | an absolute waiver of all civil liability in connection with the
618 | Program, unless a warranty or assumption of liability accompanies a
619 | copy of the Program in return for a fee.
620 |
621 | END OF TERMS AND CONDITIONS
622 |
623 | How to Apply These Terms to Your New Programs
624 |
625 | If you develop a new program, and you want it to be of the greatest
626 | possible use to the public, the best way to achieve this is to make it
627 | free software which everyone can redistribute and change under these terms.
628 |
629 | To do so, attach the following notices to the program. It is safest
630 | to attach them to the start of each source file to most effectively
631 | state the exclusion of warranty; and each file should have at least
632 | the "copyright" line and a pointer to where the full notice is found.
633 |
634 |
635 | Copyright (C)
636 |
637 | This program is free software: you can redistribute it and/or modify
638 | it under the terms of the GNU General Public License as published by
639 | the Free Software Foundation, either version 3 of the License, or
640 | (at your option) any later version.
641 |
642 | This program is distributed in the hope that it will be useful,
643 | but WITHOUT ANY WARRANTY; without even the implied warranty of
644 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
645 | GNU General Public License for more details.
646 |
647 | You should have received a copy of the GNU General Public License
648 | along with this program. If not, see .
649 |
650 | Also add information on how to contact you by electronic and paper mail.
651 |
652 | If the program does terminal interaction, make it output a short
653 | notice like this when it starts in an interactive mode:
654 |
655 | Copyright (C)
656 | This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
657 | This is free software, and you are welcome to redistribute it
658 | under certain conditions; type `show c' for details.
659 |
660 | The hypothetical commands `show w' and `show c' should show the appropriate
661 | parts of the General Public License. Of course, your program's commands
662 | might be different; for a GUI interface, you would use an "about box".
663 |
664 | You should also get your employer (if you work as a programmer) or school,
665 | if any, to sign a "copyright disclaimer" for the program, if necessary.
666 | For more information on this, and how to apply and follow the GNU GPL, see
667 | .
668 |
669 | The GNU General Public License does not permit incorporating your program
670 | into proprietary programs. If your program is a subroutine library, you
671 | may consider it more useful to permit linking proprietary applications with
672 | the library. If this is what you want to do, use the GNU Lesser General
673 | Public License instead of this License. But first, please read
674 | .
675 |
--------------------------------------------------------------------------------
/Lecture 11 - MongoDB security.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sureshmelvinsigera/CSC-424-Advanced-Database-Management-Systems/f695db4548229398f9fe96022c8bfb4c8e9664bf/Lecture 11 - MongoDB security.pdf
--------------------------------------------------------------------------------
/Lecture 2 - Python Part 2.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sureshmelvinsigera/CSC-424-Advanced-Database-Management-Systems/f695db4548229398f9fe96022c8bfb4c8e9664bf/Lecture 2 - Python Part 2.pdf
--------------------------------------------------------------------------------
/Lecture 3 - Introducing Psycopg, and CRUD using Psycopg.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sureshmelvinsigera/CSC-424-Advanced-Database-Management-Systems/f695db4548229398f9fe96022c8bfb4c8e9664bf/Lecture 3 - Introducing Psycopg, and CRUD using Psycopg.pdf
--------------------------------------------------------------------------------
/Lecture 4- Introduction NOSQL, and MongoDB.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sureshmelvinsigera/CSC-424-Advanced-Database-Management-Systems/f695db4548229398f9fe96022c8bfb4c8e9664bf/Lecture 4- Introduction NOSQL, and MongoDB.pdf
--------------------------------------------------------------------------------
/Lecture 5 - CRUD operations in MongoDB.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sureshmelvinsigera/CSC-424-Advanced-Database-Management-Systems/f695db4548229398f9fe96022c8bfb4c8e9664bf/Lecture 5 - CRUD operations in MongoDB.pdf
--------------------------------------------------------------------------------
/Lecture 6 - MongoDB Performance, Fault tolerance, and deployment Part1.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sureshmelvinsigera/CSC-424-Advanced-Database-Management-Systems/f695db4548229398f9fe96022c8bfb4c8e9664bf/Lecture 6 - MongoDB Performance, Fault tolerance, and deployment Part1.pdf
--------------------------------------------------------------------------------
/Lecture 8 - How to structure documents (schemas, and relations).pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sureshmelvinsigera/CSC-424-Advanced-Database-Management-Systems/f695db4548229398f9fe96022c8bfb4c8e9664bf/Lecture 8 - How to structure documents (schemas, and relations).pdf
--------------------------------------------------------------------------------
/Lecture 9 - Introducing PyMongo, and CRUD using PyMongo.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sureshmelvinsigera/CSC-424-Advanced-Database-Management-Systems/f695db4548229398f9fe96022c8bfb4c8e9664bf/Lecture 9 - Introducing PyMongo, and CRUD using PyMongo.pdf
--------------------------------------------------------------------------------
/Mid-term review.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sureshmelvinsigera/CSC-424-Advanced-Database-Management-Systems/f695db4548229398f9fe96022c8bfb4c8e9664bf/Mid-term review.pdf
--------------------------------------------------------------------------------
/Python Warm Up - Lab Exercises.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sureshmelvinsigera/CSC-424-Advanced-Database-Management-Systems/f695db4548229398f9fe96022c8bfb4c8e9664bf/Python Warm Up - Lab Exercises.pdf
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # CSC-424-Advanced-Database-Management-Systems
2 | CSC 424 Advanced Database Management Systems
3 |
4 | 4 hours; 4 credits. Extend the knowledge of database systems to cover non-traditional databases. Topics covered may include: Parallel system for Online Transaction Processing (OLTP), column stores for Online Analytical Processing (OLAP), transaction management, concurrent and distributed databases (cloud databases), object-oriented and multimedia databases, as well as NoSQL based databases. Use of Hadoop and Map Reduce for cloud databases. Prerequisite: CSC 315 with a grade of C or higher.
--------------------------------------------------------------------------------
/week10/Anaconda-setup.md:
--------------------------------------------------------------------------------
1 | # Setting up PyMongo for Anaconda environment
2 |
3 | ```
4 | conda create -n CSC424-PyMongo python=3.6
5 | ```
6 |
7 | ```
8 | #
9 | # To activate this environment, use:
10 | # > source activate CSC424-PyMongo
11 | #
12 | # To deactivate an active environment, use:
13 | # > source deactivate
14 | #
15 | ```
16 |
17 | ## Installing PyMongo
18 | ```
19 | conda install -c anaconda pymongo
20 | ```
21 |
22 | ## Installing Mongoengine
23 | ```
24 | conda install -c conda-forge mongoengine
25 | ```
--------------------------------------------------------------------------------
/week10/post.py:
--------------------------------------------------------------------------------
1 | import datetime
2 | from mongoengine import *
3 |
4 |
5 | class Post(Document):
6 | """
7 | Post document
8 | """
9 | title = StringField(required=True, max_length=200)
10 | content = StringField(required=True)
11 | author = StringField(required=True, max_length=50)
12 | published = DateTimeField(default=datetime.datetime.now)
13 |
--------------------------------------------------------------------------------
/week10/post/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sureshmelvinsigera/CSC-424-Advanced-Database-Management-Systems/f695db4548229398f9fe96022c8bfb4c8e9664bf/week10/post/__init__.py
--------------------------------------------------------------------------------
/week10/post/article.py:
--------------------------------------------------------------------------------
1 | import pymongo # importing Python MongoDB driver
2 | from pymongo.errors import ConnectionFailure
3 | from post import Post
4 |
5 | try:
6 | client = pymongo.MongoClient('localhost', 27017)
7 | print('Connected')
8 | except ConnectionFailure as e:
9 | print('Error', e)
10 |
11 | db = client.website # accessing the website database
12 | # you can also use the dictionary-style access:
13 | # db = client['website']
14 |
15 | post = Post(
16 | title='Sample Post',
17 | content='Some engaging content',
18 | author='Scott Smith'
19 | )
20 |
21 | post.save()
22 |
--------------------------------------------------------------------------------
/week10/post/post.py:
--------------------------------------------------------------------------------
1 | import datetime
2 | from mongoengine import *
3 |
4 |
5 | class Post(Document):
6 | """
7 | Post document
8 | """
9 | title = StringField(required=True, max_length=200)
10 | content = StringField(required=True)
11 | author = StringField(required=True, max_length=50)
12 | published = DateTimeField(default=datetime.datetime.now)
13 |
--------------------------------------------------------------------------------
/week10/post/pymongo-1.5.py:
--------------------------------------------------------------------------------
1 | import pymongo # importing Python MongoDB driver
2 | from pymongo.errors import ConnectionFailure
3 | from post import Post
4 |
5 | try:
6 | client = pymongo.MongoClient('localhost', 27017)
7 | print('Connected')
8 | except ConnectionFailure as e:
9 | print('Error', e)
10 |
11 | db = client.website # accessing the website database
12 | # you can also use the dictionary-style access:
13 | # db = client['website']
14 |
15 | posts_collection = db.posts
16 |
17 | scotts_posts = posts_collection.find({'author': 'Steve Harley'})
18 |
19 | # print(scotts_posts)
20 | for post in scotts_posts:
21 | print(post['title'])
22 |
--------------------------------------------------------------------------------
/week10/pymongo-1.1.py:
--------------------------------------------------------------------------------
1 | import pymongo # importing Python MongoDB driver
2 | from pymongo.errors import ConnectionFailure
3 |
4 | try:
5 | client = pymongo.MongoClient('localhost', 27017)
6 | print('Connected')
7 | except ConnectionFailure as e:
8 | print('Error', e)
9 |
10 | db = client.website # accessing the website database
11 | # you can also use the dictionary-style access:
12 | # db = client['website']
13 |
--------------------------------------------------------------------------------
/week10/pymongo-1.2.py:
--------------------------------------------------------------------------------
1 | import pymongo # importing Python MongoDB driver
2 | from pymongo.errors import ConnectionFailure
3 |
4 | try:
5 | client = pymongo.MongoClient('localhost', 27017)
6 | print('Connected')
7 | except ConnectionFailure as e:
8 | print('Error', e)
9 |
10 | db = client.website # accessing the website database
11 | # you can also use the dictionary-style access:
12 | # db = client['website']
13 |
14 | posts_collection = db.posts.find()
15 |
16 | # print all the posts
17 | for post in posts_collection:
18 | print(post['title'])
19 |
--------------------------------------------------------------------------------
/week10/pymongo-1.3.py:
--------------------------------------------------------------------------------
1 | import pymongo # importing Python MongoDB driver
2 | from pymongo.errors import ConnectionFailure
3 |
4 | try:
5 | client = pymongo.MongoClient('localhost', 27017)
6 | print('Connected')
7 | except ConnectionFailure as e:
8 | print('Error', e)
9 |
10 | db = client.website # accessing the website database
11 | # you can also use the dictionary-style access:
12 | # db = client['website']
13 |
14 | posts_collection = db.posts
15 |
16 | post_1 = {
17 | 'title': 'Python and MongoDB',
18 | 'content': 'PyMongo is fun, you guys',
19 | 'author': 'Scott Smith'
20 | }
21 | post_2 = {
22 | 'title': 'Anaconda Virtual Environments',
23 | 'content': 'Use virtual environments',
24 | 'author': 'Scott Smith'
25 | }
26 | post_3 = {
27 | 'title': 'Learning Python and Amazon EC2',
28 | 'content': 'Learn Python, it is easy',
29 | 'author': 'Bill Smith'
30 | }
31 |
32 | # insert many
33 | result = posts_collection.insert_many([post_1, post_2, post_3])
34 |
35 | print('Multiple posts: {0}'.format(result.inserted_ids))
36 |
--------------------------------------------------------------------------------
/week10/pymongo-1.4.py:
--------------------------------------------------------------------------------
1 | import pymongo # importing Python MongoDB driver
2 | from pymongo.errors import ConnectionFailure
3 |
4 | try:
5 | client = pymongo.MongoClient('localhost', 27017)
6 | print('Connected')
7 | except ConnectionFailure as e:
8 | print('Error', e)
9 |
10 | db = client.website # accessing the website database
11 | # you can also use the dictionary-style access:
12 | # db = client['website']
13 |
14 | posts_collection = db.posts
15 |
16 | scotts_posts = posts_collection.find({'author': 'Steve Harley'})
17 |
18 | # print(scotts_posts)
19 | for post in scotts_posts:
20 | print(post['title'])
--------------------------------------------------------------------------------
/week10/pymongo-1.5.py:
--------------------------------------------------------------------------------
1 | import pymongo # importing Python MongoDB driver
2 | from pymongo.errors import ConnectionFailure
3 |
4 | try:
5 | client = pymongo.MongoClient('localhost', 27017)
6 | print('Connected')
7 | except ConnectionFailure as e:
8 | print('Error', e)
9 |
10 | db = client.website # accessing the website database
11 | # you can also use the dictionary-style access:
12 | # db = client['website']
13 |
14 | posts_collection = db.posts
15 |
16 | posts = posts_collection.find()
17 |
18 | query = {"title": "Python and MongoDB"}
19 | update_query = {"$set": {"title": "Python and MongoDB for developers"}}
20 |
21 | posts_collection.update_one(query, update_query)
22 |
23 | for post in posts:
24 | print(post['title'])
25 |
--------------------------------------------------------------------------------
/week11/security1.1:
--------------------------------------------------------------------------------
1 | use admin
2 |
3 | db.addUser("root", "abcd");
--------------------------------------------------------------------------------
/week11/security1.2:
--------------------------------------------------------------------------------
1 | use admin
2 |
3 | db.createUser( {
4 | user: "cscuser", pwd: "csc",
5 | roles:[
6 | {
7 | role: "userAdminAnyDatabase" ,
8 | }
9 | ]
10 | }
11 | )
12 |
--------------------------------------------------------------------------------
/week11/security1.3:
--------------------------------------------------------------------------------
1 | use student
2 |
3 | db.createUser({
4 | user: "Employeeadmin", pwd: "password",
5 | roles:
6 | [
7 | {
8 | role: "userAdmin" , db:"Employee"
9 | }
10 | ]
11 | })
12 |
--------------------------------------------------------------------------------
/week11/security1.4:
--------------------------------------------------------------------------------
1 | use admin
2 |
3 | db.createUser( {
4 | user: "Suresh", pwd: "Sigera",
5 | roles:[
6 | {
7 | role: "userAdminAnyDatabase" ,
8 | db:"admin"
9 | }
10 | ]
11 | }
12 | )
13 |
--------------------------------------------------------------------------------
/week11/security1.5:
--------------------------------------------------------------------------------
1 | use admin
2 |
3 | db.createUser( {
4 | user: "Suresh", pwd: "Sigera",
5 | roles:[
6 | {
7 | role: "userAdminAnyDatabase" ,
8 | db:"admin"
9 | }
10 | ]
11 | }
12 | )
13 |
--------------------------------------------------------------------------------
/week11/security1.6:
--------------------------------------------------------------------------------
1 | db.createUser({
2 | user: "Tom", pwd: "Cruise",
3 | roles:[{
4 | role: "read" , db:"MI3"
5 | },
6 | role: "readWrite" , db:"JackReacher"
7 | }}
8 | ]
9 | })
10 |
--------------------------------------------------------------------------------
/week2/arguments-part1.1.py:
--------------------------------------------------------------------------------
1 | def load_cats(owner, *all_cats):
2 | print(owner, 'owns ')
3 | for cat in all_cats:
4 | print(cat)
5 |
6 |
7 | def load_good_cats(owner, *arg):
8 | print(owner, 'owns ')
9 | for value in arg:
10 | print(value)
11 |
12 |
13 | cats = ['Oscar', 'Max', 'Tiger', 'Sam', 'Misty', 'Simba', 'Coco', 'Chloe', 'Lucy', 'Molly']
14 | load_cats('James', cats)
15 | load_good_cats('James', cats)
16 |
--------------------------------------------------------------------------------
/week2/arguments-part1.2.py:
--------------------------------------------------------------------------------
1 | def load_grades(a, b, c, *args):
2 | print(a)
3 | print(b)
4 | print(c)
5 | print(args)
6 |
7 |
8 | grades = [10, 20, 60, 90, 50]
9 | load_grades(*grades)
10 |
--------------------------------------------------------------------------------
/week2/arguments-part1.3.py:
--------------------------------------------------------------------------------
1 | students = {
2 | 1:
3 | {
4 | 'name': 'John',
5 | 'gpa': 3.0,
6 | 'classes_taken': ('CSC126', 'CSC211', 'CSC326')
7 | },
8 | 2:
9 | {
10 | 'name': 'Mike',
11 | 'gpa': 2.0,
12 | 'classes_taken': ('CSC126', 'CSC211', 'CSC326')
13 | },
14 | }
15 |
16 |
17 | def load_student(**kwargs):
18 | for key, values in kwargs.items():
19 | print('\n')
20 | for value in values:
21 | print(values[value])
22 |
23 |
24 | load_student(data=students)
25 |
--------------------------------------------------------------------------------
/week2/arguments-part1.4.py:
--------------------------------------------------------------------------------
1 | def func(a, b, c=7, *args, **kwargs):
2 | print('a, b, c:', a, b, c)
3 | print('args:', args)
4 | print('kwargs:', kwargs)
5 |
6 |
7 | func(1, 2, 3, *(5, 7, 9), **{'A': 'a', 'B': 'b'})
8 | func(1, 2, 3, 5, 7, 9, A='a', B='b') # same as previous one
9 |
--------------------------------------------------------------------------------
/week2/class-part-1.1.py:
--------------------------------------------------------------------------------
1 | class Student:
2 | pass
3 |
--------------------------------------------------------------------------------
/week2/class-part-1.2.py:
--------------------------------------------------------------------------------
1 | class Actor:
2 | def __init__(self, actor_name, actor_age, movie_list):
3 | print('Creating the actor profile')
4 | self.name = actor_name
5 | self.age = actor_age
6 | self.movies = movie_list
7 |
8 | def print_actor_information(self):
9 | print(self.name)
10 | print(self.age)
11 | for movie in self.movies:
12 | print(movie)
13 | print('\n===')
14 |
15 | # creating actor objects
16 | anthony = Actor('Anthony Hopkins', 81, ['Solace', 'Fracture'])
17 | mark = Actor('Mark Wahlberg', 47, ['Mile 22', 'Ted'])
18 | ed = Actor('Ed Harris', 68, ['A Beautiful Mind', 'Apollo 13'])
19 | harrison = Actor('Harrison Ford', 76, ['Cowboys & Aliens', 'Morning Glory'])
20 |
21 | anthony.print_actor_information()
22 | mark.print_actor_information()
23 | ed.print_actor_information()
24 | harrison.print_actor_information()
25 |
--------------------------------------------------------------------------------
/week2/class-part-1.3.py:
--------------------------------------------------------------------------------
1 | class Account(object):
2 | """
3 | A customer of ABC Bank with a checking account. Customers have the
4 | following properties:
5 |
6 | Attributes:
7 | name: A string representing the customer's name.
8 | balance: A float tracking the current balance of the customer's account.
9 | """
10 |
11 | def __init__(self, name, balance):
12 | """Return a Customer object whose name is *name*.
13 | :param name:
14 | :param balance:
15 | """
16 | self.name = name
17 | self.balance = balance
18 |
19 | def withdraw(self, amount):
20 | """Return the balance remaining after withdrawing *amount*
21 | dollars.
22 | :param amount:
23 | :return:
24 | """
25 | if amount > self.balance:
26 | raise RuntimeError('Amount greater than available balance.')
27 | self.balance -= amount
28 | return self.balance
29 |
30 | def deposit(self, amount):
31 | """Return the balance remaining after depositing *amount*
32 | dollars.
33 | :param amount:
34 | :return:
35 | balance
36 | """
37 | self.balance += amount
38 | return self.balance
39 |
40 | def print_info(self):
41 | """Prints account information
42 | :return:
43 | None
44 | """
45 | print('-----------------------------')
46 | print('Customer name : ', self.name)
47 | print('Balance : $', self.balance)
48 | print('-----------------------------\n')
49 |
--------------------------------------------------------------------------------
/week2/conditions-part1.1.py:
--------------------------------------------------------------------------------
1 | x = 10
2 |
3 | if x == 10:
4 | print('x is 10')
5 | else:
6 | print('x is not equal to 10')
7 |
--------------------------------------------------------------------------------
/week2/conditions-part1.2.py:
--------------------------------------------------------------------------------
1 | trip_status = True
2 |
3 | if trip_status:
4 | print('We are going hiking!')
5 | else:
6 | print('Weather is not good, better to stay home')
7 |
--------------------------------------------------------------------------------
/week2/conditions-part1.3.py:
--------------------------------------------------------------------------------
1 | def get_letter_grade(scores):
2 | if scores >= 90 and scores <= 100:
3 | return 'A'
4 | elif scores >= 80 and scores <= 89:
5 | return 'B'
6 | elif scores >= 70 and scores <= 79:
7 | return 'C'
8 | elif scores >= 60 and scores <= 69:
9 | return 'D'
10 | elif scores >= 50 and scores <= 59:
11 | return 'E'
12 | else:
13 | return 'F'
14 |
15 |
16 | score = get_letter_grade(67)
17 | print('Grade is ', score)
18 |
--------------------------------------------------------------------------------
/week2/dictionary-part1.1.py:
--------------------------------------------------------------------------------
1 | student = {
2 | 'name': 'John',
3 | 'GPA': 3.2,
4 | 'Major': 'Physics'
5 | }
6 |
7 | for k, v in student.items():
8 | print(k, v)
9 |
--------------------------------------------------------------------------------
/week2/dictionary-part1.2.py:
--------------------------------------------------------------------------------
1 | students = {
2 | 1:
3 | {
4 | 'name': 'John',
5 | 'gpa': 3.0,
6 | 'classes_taken': ('CSC126', 'CSC211', 'CSC326')
7 | },
8 | 2:
9 | {
10 | 'name': 'Mike',
11 | 'gpa': 2.0,
12 | 'classes_taken': ('CSC126', 'CSC211', 'CSC326')
13 | },
14 | 3:
15 | {
16 | 'name': 'Stacy',
17 | 'gpa': 4.0,
18 | 'Major': 'CS',
19 | 'classes_taken': ('CSC126', 'CSC211', 'CSC326')
20 | },
21 | 4:
22 | {
23 | 'name': 'Bruce',
24 | 'gpa': 3.2,
25 | 'Major': 'CSI',
26 | 'Minor': 'ISI',
27 | 'classes_taken': ('CSC211', 'CSC326')
28 | }
29 | }
30 |
31 | for key, values in students.items():
32 | print('\n')
33 | for value in values:
34 | print(values[value])
35 |
--------------------------------------------------------------------------------
/week2/dictionary-part1.3.py:
--------------------------------------------------------------------------------
1 | students = {
2 | 1:
3 | {
4 | 'name': 'John',
5 | 'gpa': 3.0,
6 | 'classes_taken': ('CSC126', 'CSC211', 'CSC326')
7 | },
8 | 2:
9 | {
10 | 'name': 'Mike',
11 | 'gpa': 2.0,
12 | 'classes_taken': ('CSC126', 'CSC211', 'CSC326')
13 | },
14 | 3:
15 | {
16 | 'name': 'Stacy',
17 | 'gpa': 4.0,
18 | 'Major': 'CS',
19 | 'classes_taken': ('CSC126', 'CSC211', 'CSC326')
20 | },
21 | 4:
22 | {
23 | 'name': 'Bruce',
24 | 'gpa': 3.2,
25 | 'Major': 'CSI',
26 | 'Minor': 'ISI',
27 | 'classes_taken': ('CSC211', 'CSC326')
28 | },
29 | 5:
30 | {
31 | 'name': 'Jane',
32 | 'gpa': 3.7,
33 | 'Major': 'CSI',
34 | 'Minor': 'ISI',
35 | 'classes_taken': ('CSC126', 'CSC211', 'CSC326', 'CSC330', 'CSC490')
36 | }
37 | }
38 |
39 | # print(students[1]['name'], students[1]['gpa'])
40 | # print(students[2]['name'], students[2]['gpa'])
41 |
42 | good_students = []
43 |
44 | for key, values in students.items():
45 | # print('key : ', key)
46 | if values['gpa'] > 3.0:
47 | # print('firing if key : ', key)
48 | good_students.append(values['name'])
49 |
50 | print('Students with gpa > 3.0')
51 | for i in good_students:
52 | print(i)
53 |
--------------------------------------------------------------------------------
/week2/dictionary-part1.4.py:
--------------------------------------------------------------------------------
1 | students = {
2 | 1:
3 | {
4 | 'name': 'John',
5 | 'gpa': 3.0,
6 | 'classes_taken': ('490',)
7 | },
8 | 2:
9 | {
10 | 'name': 'Mike',
11 | 'gpa': 2.0,
12 | 'classes_taken': ('CSC211', 'CSC220', 'CSC326',)
13 | },
14 | 3:
15 | {
16 | 'name': 'Stacy',
17 | 'gpa': 4.0,
18 | 'Major': 'CS',
19 | 'classes_taken': ('CSC126', 'CSC211', 'CSC326',)
20 | },
21 | 4:
22 | {
23 | 'name': 'Bruce',
24 | 'gpa': 3.2,
25 | 'Major': 'CSI',
26 | 'Minor': 'ISI',
27 | 'classes_taken': ('CSC211', 'CSC326',)
28 | },
29 | 5:
30 | {
31 | 'name': 'Jane',
32 | 'gpa': 3.7,
33 | 'major': 'CSI',
34 | 'minor': 'ISI',
35 | 'classes_taken': ('CSC126', 'CSC211', 'CSC326', 'CSC330', 'CSC490')
36 | }
37 | }
38 |
39 | for key, values in students.items():
40 | # print(type(key), type(values))
41 | for k, v in values.items():
42 | # print(k, values[k])
43 | if k == 'classes_taken':
44 | for i in values[k]:
45 | if i == 'CSC126':
46 | print(values['name'])
47 |
--------------------------------------------------------------------------------
/week2/list-loop-part1.1.py:
--------------------------------------------------------------------------------
1 | grades = [100, 20, 90, 100, 89]
2 |
3 | for grade in grades:
4 | print(grade)
5 |
--------------------------------------------------------------------------------
/week2/list-loop-part1.2.py:
--------------------------------------------------------------------------------
1 | grades = [100, 20, 90, 100, 89]
2 |
3 | for i in range(len(grades)):
4 | print(grades[i])
5 |
--------------------------------------------------------------------------------
/week2/list-loop-part1.3.py:
--------------------------------------------------------------------------------
1 | grades = [100, 20, 90, 100, 89]
2 |
3 | for pos, value in enumerate(grades):
4 | print(pos, ' ', value)
5 |
--------------------------------------------------------------------------------
/week2/module-part1.1/customer.py:
--------------------------------------------------------------------------------
1 | class Account(object):
2 | """
3 | A customer of ABC Bank with a checking account. Customers have the
4 | following properties:
5 |
6 | Attributes:
7 | name: A string representing the customer's name.
8 | balance: A float tracking the current balance of the customer's account.
9 | """
10 |
11 | def __init__(self, name, balance):
12 | """Return a Customer object whose name is *name*.
13 | :param name:
14 | :param balance:
15 | """
16 | self.name = name
17 | self.balance = balance
18 |
19 | def withdraw(self, amount):
20 | """Return the balance remaining after withdrawing *amount*
21 | dollars.
22 | :param amount:
23 | :return:
24 | """
25 | if amount > self.balance:
26 | raise RuntimeError('Amount greater than available balance.')
27 | self.balance -= amount
28 | return self.balance
29 |
30 | def deposit(self, amount):
31 | """Return the balance remaining after depositing *amount*
32 | dollars.
33 | :param amount:
34 | :return:
35 | balance
36 | """
37 | self.balance += amount
38 | return self.balance
39 |
40 | def print_info(self):
41 | """Prints account information
42 | :return:
43 | None
44 | """
45 | print('-----------------------------')
46 | print('Customer name : ', self.name)
47 | print('Balance : $', self.balance)
48 | print('-----------------------------\n')
49 |
--------------------------------------------------------------------------------
/week2/module-part1.1/modules-part1.1.py:
--------------------------------------------------------------------------------
1 | from customer import Account # importing the account module
2 |
3 | ed = Account("Ed Harris", 67000) # creating the account Account object named ed
4 | ed.print_info() # print balance
5 | ed.withdraw(7000)
6 | ed.print_info() # print balance
7 | ed.deposit(7000)
8 | ed.print_info()
--------------------------------------------------------------------------------
/week3/psycopg2-part1.1.py:
--------------------------------------------------------------------------------
1 | import psycopg2
2 |
3 | # create the to the connection database via psycopg2.connect
4 | connection = psycopg2.connect(
5 | database='sample',
6 | user='postgres',
7 | password='CSI1',
8 | host='localhost',
9 | port='5432'
10 | )
11 |
12 | # print out the connection information
13 | print(connection)
14 |
--------------------------------------------------------------------------------
/week3/psycopg2-part1.2.py:
--------------------------------------------------------------------------------
1 | import psycopg2
2 |
3 | # create the to the connection database via psycopg2.connect
4 | connection = psycopg2.connect(
5 | database='sample',
6 | user='postgres',
7 | password='CSI1',
8 | host='localhost',
9 | port='5432'
10 | )
11 |
12 | cur = connection.cursor()
13 | cur.execute(
14 | '''
15 | CREATE TABLE COMPANY
16 | (ID INT PRIMARY KEY NOT NULL,
17 | NAME TEXT NOT NULL,
18 | AGE INT NOT NULL,
19 | ADDRESS CHAR(50),
20 | SALARY REAL);
21 | '''
22 | )
23 | print("Table created successfully")
24 | connection.commit() # apply the changes
25 | connection.close() # close the connection
26 |
--------------------------------------------------------------------------------
/week3/psycopg2-part1.py:
--------------------------------------------------------------------------------
1 | # import Python PostgreSQL DB API
2 | import psycopg2
3 |
4 | # Connect to the PostgreSQL database
5 | conn = psycopg2.connect("dbname=testdb user=postgres password='CSI1'")
6 |
7 | print(conn)
--------------------------------------------------------------------------------
/week3/psycopg2-part2.py:
--------------------------------------------------------------------------------
1 | # import Python PostgreSQL DB API
2 | import psycopg2
3 |
4 | # Connect to the PostgreSQL database
5 | conn = psycopg2.connect(dbname='testdb', user='postgres', password='CSI1')
6 |
7 | print(conn)
--------------------------------------------------------------------------------
/week3/psycopg2-part3.py:
--------------------------------------------------------------------------------
1 | # import Python PostgreSQL DB API
2 | import psycopg2
3 |
4 | conn = None
5 | cur = None
6 | # try to connect to the DB
7 | try:
8 | conn = psycopg2.connect(
9 | user="postgres",
10 | password="CSI1",
11 | host="localhost",
12 | port="5432",
13 | database="postgres"
14 | )
15 | cur = conn.cursor()
16 | # execute 1st statement
17 | # cur.execute(statement_1)
18 | # execute 2nd statement
19 | # cur.execute(statement_1)
20 |
21 | # commit the transaction
22 | conn.commit()
23 |
24 | # close the database communication
25 | cur.close()
26 | # accept the error
27 | except psycopg2.DatabaseError as error:
28 | print(error)
29 | finally:
30 | if conn is not None:
31 | print(conn)
32 | conn.close()
33 |
--------------------------------------------------------------------------------
/week3/psycopg2-suppliers-create.py:
--------------------------------------------------------------------------------
1 | import psycopg2
2 |
3 |
4 | def create_tables():
5 | """ create tables in the PostgreSQL database
6 | :return: None
7 | """
8 | commands = (
9 | """
10 | CREATE TABLE vendors (
11 | vendor_id SERIAL PRIMARY KEY,
12 | vendor_name VARCHAR(255) NOT NULL
13 | )
14 | """,
15 | """ CREATE TABLE parts (
16 | part_id SERIAL PRIMARY KEY,
17 | part_name VARCHAR(255) NOT NULL
18 | )
19 | """,
20 | """
21 | CREATE TABLE part_drawings (
22 | part_id INTEGER PRIMARY KEY,
23 | file_extension VARCHAR(5) NOT NULL,
24 | drawing_data BYTEA NOT NULL,
25 | FOREIGN KEY (part_id)
26 | REFERENCES parts (part_id)
27 | ON UPDATE CASCADE ON DELETE CASCADE
28 | )
29 | """,
30 | """
31 | CREATE TABLE vendor_parts (
32 | vendor_id INTEGER NOT NULL,
33 | part_id INTEGER NOT NULL,
34 | PRIMARY KEY (vendor_id , part_id),
35 | FOREIGN KEY (vendor_id)
36 | REFERENCES vendors (vendor_id)
37 | ON UPDATE CASCADE ON DELETE CASCADE,
38 | FOREIGN KEY (part_id)
39 | REFERENCES parts (part_id)
40 | ON UPDATE CASCADE ON DELETE CASCADE
41 | )
42 | """)
43 | conn = None
44 | cur = None
45 | try:
46 | # connect to the PostgreSQL server
47 | conn = psycopg2.connect(user="postgres",
48 | password="CSI1",
49 | host="localhost",
50 | port="5432",
51 | database="suppliers")
52 | cur = conn.cursor()
53 | # create table one by one
54 | for command in commands:
55 | cur.execute(command)
56 | # close communication with the PostgreSQL database server
57 | cur.close()
58 | # commit the changes
59 | conn.commit()
60 | except (Exception, psycopg2.DatabaseError) as error:
61 | print(error)
62 | conn.rollback()
63 | finally:
64 | # closing database connection.
65 | if conn is not None:
66 | cur.close()
67 | conn.close()
68 |
69 |
70 | if __name__ == '__main__':
71 | create_tables()
72 |
--------------------------------------------------------------------------------
/week3/psycopg2-suppliers-delete.py:
--------------------------------------------------------------------------------
1 | import psycopg2
2 |
3 |
4 | def delete_part(part_id):
5 | """delete part by part id
6 | :param part_id:
7 | :return: rows_deleted
8 | """
9 | conn = None
10 | rows_deleted = 0
11 | try:
12 | # connect to the PostgreSQL database
13 | conn = psycopg2.connect(user="postgres",
14 | password="CSI1",
15 | host="localhost",
16 | port="5432",
17 | database="suppliers")
18 | # create a new cursor
19 | cur = conn.cursor()
20 | # execute the UPDATE statement
21 | cur.execute("""DELETE FROM parts WHERE part_id = %s""", (part_id,))
22 | # get the number of updated rows
23 | rows_deleted = cur.rowcount
24 | # Commit the changes to the database
25 | conn.commit()
26 | # Close communication with the PostgreSQL database
27 | cur.close()
28 | except (Exception, psycopg2.DatabaseError) as error:
29 | conn.rollback()
30 | print(error)
31 | finally:
32 | if conn is not None:
33 | conn.close()
34 |
35 | return rows_deleted
36 |
37 |
38 | if __name__ == '__main__':
39 | deleted_rows = delete_part(2)
40 | print('The number of deleted rows: ', deleted_rows)
41 |
--------------------------------------------------------------------------------
/week3/psycopg2-suppliers-insert-manny-rows.py:
--------------------------------------------------------------------------------
1 | import psycopg2
2 |
3 |
4 | def insert_vendor_list(vendor_list):
5 | """ insert multiple vendors into the vendors table
6 | :param vendor_list:
7 | :return: None
8 | """
9 | sql = """INSERT INTO vendors(vendor_name) VALUES(%s)"""
10 | conn = None
11 | try:
12 | # connect to the PostgreSQL database
13 | conn = psycopg2.connect(user="postgres",
14 | password="CSI1",
15 | host="localhost",
16 | port="5432",
17 | database="suppliers")
18 | # create a new cursor
19 | cur = conn.cursor()
20 | # execute the INSERT statement
21 | cur.executemany(sql, vendor_list)
22 | # commit the changes to the database
23 | conn.commit()
24 | # close communication with the database
25 | cur.close()
26 | except (Exception, psycopg2.DatabaseError) as error:
27 | conn.rollback()
28 | print(error)
29 | finally:
30 | if conn is not None:
31 | conn.close()
32 |
33 |
34 | if __name__ == '__main__':
35 | vendors = [
36 | ('AKM Semiconductor Inc.',),
37 | ('Asahi Glass Co Ltd.',),
38 | ('Daikin Industries Ltd.',),
39 | ('Dynacast International Inc.',),
40 | ('Foster Electric Co. Ltd.',),
41 | ('Murata Manufacturing Co. Ltd.',)
42 | ]
43 | insert_vendor_list(vendors)
44 |
--------------------------------------------------------------------------------
/week3/psycopg2-suppliers-insert-one-row.py:
--------------------------------------------------------------------------------
1 | import psycopg2
2 |
3 |
4 | def insert_vendor(vendor_name):
5 | """ insert a new vendor into the vendors table
6 | :param vendor_name:
7 | :return: vendor_id
8 | """
9 | sql = """INSERT INTO vendors(vendor_name)
10 | VALUES(%s) RETURNING vendor_id;"""
11 | conn = None
12 | vendor_id = None
13 | try:
14 | # connect to the PostgreSQL database
15 | conn = psycopg2.connect(user="postgres",
16 | password="CSI1",
17 | host="localhost",
18 | port="5432",
19 | database="suppliers")
20 | # create a new cursor
21 | cur = conn.cursor()
22 | # execute the INSERT statement
23 | cur.execute(sql, (vendor_name,))
24 | # get the generated id back
25 | vendor_id = cur.fetchone()[0]
26 | # commit the changes to the database
27 | conn.commit()
28 | # close communication with the database
29 | cur.close()
30 | except (Exception, psycopg2.DatabaseError) as error:
31 | conn.rollback()
32 | print(error)
33 | finally:
34 | if conn is not None:
35 | conn.close()
36 |
37 | return vendor_id
38 |
39 |
40 | if __name__ == '__main__':
41 | insert_vendor("3M Co.")
--------------------------------------------------------------------------------
/week3/psycopg2-suppliers-transaction.py:
--------------------------------------------------------------------------------
1 | import psycopg2
2 |
3 |
4 | def add_part(part_name, vendor_list):
5 | """ Add new part and assign a vendor
6 | :param part_name:
7 | :param vendor_list:
8 | :return: None
9 | """
10 | # statement for inserting a new row into the parts table
11 | insert_part = """INSERT INTO parts(part_name) VALUES(%s) RETURNING part_id;"""
12 |
13 | # statement for inserting a new row into the vendor_parts table
14 | assign_vendor = """INSERT INTO vendor_parts(vendor_id,part_id) VALUES(%s,%s)"""
15 |
16 | conn = None
17 | try:
18 | # connect to the PostgreSQL database
19 | conn = psycopg2.connect(user="postgres",
20 | password="CSI1",
21 | host="localhost",
22 | port="5432",
23 | database="suppliers")
24 | # create a new cursor
25 | cur = conn.cursor()
26 | # insert a new part
27 | cur.execute(insert_part, (part_name,))
28 | # get the part id
29 | part_id = cur.fetchone()[0]
30 | # assign parts provided by vendors
31 | for vendor_id in vendor_list:
32 | cur.execute(assign_vendor, (vendor_id, part_id))
33 |
34 | # close communication with the database
35 | conn.commit()
36 | except (Exception, psycopg2.DatabaseError) as error:
37 | conn.rollback()
38 | print(error)
39 | finally:
40 | if conn is not None:
41 | conn.close()
42 |
43 |
44 | if __name__ == '__main__':
45 | add_part('SIM Tray', (1, 2))
46 | add_part('Speaker', (3, 4))
47 | add_part('Vibrator', (5, 6))
48 | add_part('Antenna', (6, 7))
49 | add_part('Home Button', (1, 5))
50 | add_part('LTE Modem', (1, 5))
51 |
--------------------------------------------------------------------------------
/week3/psycopg2-suppliers-update.py:
--------------------------------------------------------------------------------
1 | import psycopg2
2 |
3 |
4 | def update_vendor(vendor_id, vendor_name):
5 | """ update vendor name based on the vendor id
6 | :param vendor_id:
7 | :param vendor_name:
8 | :return: updated_rows
9 | """
10 | sql = """ UPDATE vendors
11 | SET vendor_name = %s
12 | WHERE vendor_id = %s"""
13 | conn = None
14 | updated_rows = 0
15 | try:
16 | # connect to the PostgreSQL database
17 | conn = psycopg2.connect(user="postgres",
18 | password="CSI1",
19 | host="localhost",
20 | port="5432",
21 | database="suppliers")
22 | # create a new cursor
23 | cur = conn.cursor()
24 | # execute the UPDATE statement
25 | cur.execute(sql, (vendor_name, vendor_id))
26 | # get the number of updated rows
27 | updated_rows = cur.rowcount
28 | # Commit the changes to the database
29 | conn.commit()
30 | # Close communication with the PostgreSQL database
31 | cur.close()
32 | except (Exception, psycopg2.DatabaseError) as error:
33 | conn.rollback()
34 | print(error)
35 | finally:
36 | if conn is not None:
37 | conn.close()
38 |
39 | return updated_rows
40 |
41 |
42 | if __name__ == '__main__':
43 | update_vendor(1, "3M Inc.")
44 |
--------------------------------------------------------------------------------
/week3/restore-databse.txt:
--------------------------------------------------------------------------------
1 | pg_restore -U postgres -d dvd dvdrental.tar
--------------------------------------------------------------------------------
/week4/json-part1.1.py:
--------------------------------------------------------------------------------
1 | student = {
2 | 1: {
3 | 'name': ' John',
4 | 'age': 25,
5 | 'position': 'software engineer'
6 | },
7 | 2: {
8 | 'name': ' Melvin',
9 | 'age': 25,
10 | 'position': 'intern'
11 | },
12 | 3: {
13 | 'name': ' Stacy',
14 | 'age': 23,
15 | 'position': 'software engineer'
16 | }
17 | }
18 |
19 | good_students = []
20 |
21 | for key, values in student.items():
22 | if values['position'] == 'software engineer':
23 | print(values['name'])
24 |
--------------------------------------------------------------------------------
/week4/mongodb-part1.txt:
--------------------------------------------------------------------------------
1 | show dbs
2 | use CSC424
3 | db.createCollection("students")
4 | show collections
5 | db
6 | db.dropDatabase()
--------------------------------------------------------------------------------
/week5/mongodb-part1.txt:
--------------------------------------------------------------------------------
1 | show dbs
2 | use CSC424
3 | db.createCollection("movies")
--------------------------------------------------------------------------------
/week5/mongodb-part10.txt:
--------------------------------------------------------------------------------
1 | db.users.updateOne({"name": "Chris"}, {
2 | $set: {
3 | "hobbies": [
4 | {title: "Sports", "frequency": 2},
5 | {title: "Cooking", "frequency": 3},
6 | {title: "Hiking", "frequency": 3}
7 | ]
8 | }
9 | })
10 |
--------------------------------------------------------------------------------
/week5/mongodb-part11.txt:
--------------------------------------------------------------------------------
1 | db.users.updateMany({"hobbies.title": "Sports"}, {
2 | $set: {
3 | "isSporty": true
4 | }
5 | })
--------------------------------------------------------------------------------
/week5/mongodb-part12.txt:
--------------------------------------------------------------------------------
1 | db.users.updateOne({"name": "Chris"}, {
2 | $set: {
3 | "age": 40,
4 | "phone": 2122221222
5 | }
6 | })
--------------------------------------------------------------------------------
/week5/mongodb-part13.txt:
--------------------------------------------------------------------------------
1 | db.users.updateOne({"name": "Manuel"}, {
2 | $inc: {
3 | "age": 1,
4 | }
5 | })
--------------------------------------------------------------------------------
/week5/mongodb-part14.txt:
--------------------------------------------------------------------------------
1 | db.users.updateOne({"name": "Manuel"}, {
2 | $inc: {
3 | "age": -1,
4 | }
5 | })
--------------------------------------------------------------------------------
/week5/mongodb-part15.txt:
--------------------------------------------------------------------------------
1 | db.users.updateMany({"isSporty": true}, {
2 | $unset: {
3 | "phone": "",
4 | }
5 | })
6 |
--------------------------------------------------------------------------------
/week5/mongodb-part16.txt:
--------------------------------------------------------------------------------
1 | db.users.updateMany({}, {
2 | $rename: {
3 | "name": "username",
4 | }
5 | })
--------------------------------------------------------------------------------
/week5/mongodb-part17.txt:
--------------------------------------------------------------------------------
1 | db.users.updateOne({"name": "Suresh"}, {
2 | $set: {
3 | "age": 25,
4 | "hobbies":[
5 | {
6 | "title": "Cooking",
7 | "frequency":3
8 | }
9 | ],
10 | "isSporty": true
11 | }
12 | },
13 | {upsert:true})
--------------------------------------------------------------------------------
/week5/mongodb-part18.txt:
--------------------------------------------------------------------------------
1 | db.users.find({$and:
2 | [
3 | {"hobbies.title": "Sports"},
4 | {"hobbies.frequency": {$gte: 3}}
5 | ]
6 | }).count()
--------------------------------------------------------------------------------
/week5/mongodb-part19.txt:
--------------------------------------------------------------------------------
1 | db.users.find({
2 | "hobbies":{
3 | $elemMatch:{
4 | "title": "Sports",
5 | "frequency": {$gte:3}
6 | }
7 | }
8 | }).count()
--------------------------------------------------------------------------------
/week5/mongodb-part2.txt:
--------------------------------------------------------------------------------
1 | db.movies.insertOne({"title" : "Stand by Me"})
2 | db.movies.insertOne({"title" : "Kingsman: The Secret Service"})
3 | db.movies.insertOne({"title" : "Tinker, Tailor, Soldier, Spy"})
4 | db.movies.insertOne({"title" : "Argo"})
--------------------------------------------------------------------------------
/week5/mongodb-part20.txt:
--------------------------------------------------------------------------------
1 | db.users.updateMany({
2 | "hobbies":{
3 | $elemMatch:{
4 | "title": "Sports",
5 | "frequency": {$gte:3}
6 | }
7 | }
8 | },{ $set:{ "hobbies.$.highFrequency": true } })
--------------------------------------------------------------------------------
/week5/mongodb-part21.txt:
--------------------------------------------------------------------------------
1 | mongoimport --db catalog --collection books --type json --drop --file catalog.books.json
--------------------------------------------------------------------------------
/week5/mongodb-part22.txt:
--------------------------------------------------------------------------------
1 | db.books.find({
2 | pageCount:{$eq:300}
3 | }).count()
4 |
--------------------------------------------------------------------------------
/week5/mongodb-part23.txt:
--------------------------------------------------------------------------------
1 | db.books.find({
2 | pageCount:{$ne:300}
3 | }).count()
--------------------------------------------------------------------------------
/week5/mongodb-part24.txt:
--------------------------------------------------------------------------------
1 | db.books.find({
2 | pageCount:{$lte:300}
3 | }).count()
--------------------------------------------------------------------------------
/week5/mongodb-part25.txt:
--------------------------------------------------------------------------------
1 | db.books.find({
2 | pageCount:{$gte:300}
3 | }).count()
--------------------------------------------------------------------------------
/week5/mongodb-part26.txt:
--------------------------------------------------------------------------------
1 | db.books.find({
2 | pageCount:{$gt:300}
3 | }).count()
--------------------------------------------------------------------------------
/week5/mongodb-part27.txt:
--------------------------------------------------------------------------------
1 | db.books.find({
2 | pageCount:{$lt:300}
3 | }).count()
--------------------------------------------------------------------------------
/week5/mongodb-part28.txt:
--------------------------------------------------------------------------------
1 | db.books.find({
2 | pageCount:{$in: [300,400]}
3 | }).count()
4 |
--------------------------------------------------------------------------------
/week5/mongodb-part29.txt:
--------------------------------------------------------------------------------
1 | db.books.find({
2 | pageCount:{$nin: [300,400]}
3 | }).count()
4 |
--------------------------------------------------------------------------------
/week5/mongodb-part3.txt:
--------------------------------------------------------------------------------
1 | db.movies.insertMany([
2 | {"title" : "Ghostbusters"},
3 | {"title" : "E.T."},
4 | {"title" : "Blade Runner"}
5 | {"title" : "007"}
6 | {"title" : "War"}
7 | {"title" : "IP Man"}
8 | ]);
9 |
--------------------------------------------------------------------------------
/week5/mongodb-part30.txt:
--------------------------------------------------------------------------------
1 | db.books.find({
2 | $and:[
3 | {"categories" : "Java"}, {"status" : "PUBLISH"}
4 | ]
5 | }).count()
6 |
--------------------------------------------------------------------------------
/week5/mongodb-part31.txt:
--------------------------------------------------------------------------------
1 | db.books.find({
2 | $or:[
3 | {"categories" : "Java"}, {"categories" : "Python"}
4 | ]
5 | }).count()
6 |
--------------------------------------------------------------------------------
/week5/mongodb-part32.txt:
--------------------------------------------------------------------------------
1 | db.books.find({
2 | $nor:[
3 | {"categories" : "Java"}, {"categories" : "Python"}
4 | ]
5 | }).count()
--------------------------------------------------------------------------------
/week5/mongodb-part33.txt:
--------------------------------------------------------------------------------
1 | db.books.find({"categories":"Java"}, {"isbn":1, "title":1})
--------------------------------------------------------------------------------
/week5/mongodb-part34.txt:
--------------------------------------------------------------------------------
1 | db.books.find({"authors":"Dave Crane"}, {"authors":1, "title":1})
--------------------------------------------------------------------------------
/week5/mongodb-part36.txt:
--------------------------------------------------------------------------------
1 | db.movies.deleteOne({name: "Chris"})
--------------------------------------------------------------------------------
/week5/mongodb-part4.txt:
--------------------------------------------------------------------------------
1 | db.movies.find().pretty()
--------------------------------------------------------------------------------
/week5/mongodb-part5.txt:
--------------------------------------------------------------------------------
1 | db.movies.findOne({title:"War"})
--------------------------------------------------------------------------------
/week5/mongodb-part6.txt:
--------------------------------------------------------------------------------
1 | mongoimport --db tv-shows --collection shows --file tv-shows.json --jsonArray
--------------------------------------------------------------------------------
/week5/mongodb-part7.txt:
--------------------------------------------------------------------------------
1 | db.movies.insertOne({
2 | "title": "Ip Man 2",
3 | "rating": 7.6,
4 | "director":
5 | ["Wilson Yip"],
6 | "languages": [
7 | "English",
8 | "Standard Mandarin",
9 | "Cantonese"],
10 | "actors": [
11 | "Donnie Yen",
12 | "Sammo Hung",
13 | "Lynn Hung",
14 | "Louis Fan",
15 | "Simon Yam"
16 | ]}
17 | )
18 |
19 | db.movies.insertOne({
20 | "title": "Ip Man 3",
21 | "rating": 7.1,
22 | "director":
23 | ["Wilson Yip"],
24 | "languages": [
25 | "English",
26 | "Standard Mandarin",
27 | "Cantonese"],
28 | "actors": [
29 | "Donnie Yen",
30 | "Zhang Jin",
31 | "Mike Tyson",
32 | "Danny Chan Kwok-kwan",
33 | ]}
34 | )
--------------------------------------------------------------------------------
/week5/mongodb-part8.txt:
--------------------------------------------------------------------------------
1 | db.movies.insertMany([
2 | {
3 | "title": "Black Panther",
4 | "rating": 7.4,
5 | "director":
6 | ["Ryan Coogler"],
7 | "languages": [
8 | "English",
9 | ],
10 | "actors": [
11 | "Chadwick Boseman",
12 | "Michael B. Jordan",
13 | "Lupita Nyong'o",
14 | ]
15 | }
16 | ,
17 | {
18 | "title": "Mission: Impossible – Fallout",
19 | "rating": 7.8,
20 | "director":
21 | ["Christopher McQuarrie"],
22 | "languages": [
23 | "English",
24 | ],
25 | "actors": [
26 | "Tom Cruise",
27 | "Henry Cavill",
28 | "Rebecca Ferguson",
29 | ]
30 | }
31 | ])
32 |
--------------------------------------------------------------------------------
/week5/mongodb-part9.txt:
--------------------------------------------------------------------------------
1 | db.createCollection('users')
2 | db.users.insertMany(
3 | [
4 | {
5 | "name": "Max",
6 | "hobbies": [
7 | {
8 | "title": "Sports",
9 | "frequency": 3
10 | },
11 | {
12 | "title": "Cooking",
13 | "frequency": 6
14 | }
15 | ],
16 | "phone": 131782734
17 | },
18 | {
19 | "name": "Manuel",
20 | "hobbies": [
21 | {
22 | "title": "Cooking",
23 | "frequency": 5
24 | },
25 | {
26 | "title": "Cars",
27 | "frequency": 2
28 | }
29 | ],
30 | "phone": "012177972",
31 | "age": 30
32 | },
33 | {
34 | "name": "Anna",
35 | "hobbies": [
36 | {
37 | "title": "Sports",
38 | "frequency": 2
39 | },
40 | {
41 | "title": "Yoga",
42 | "frequency": 3
43 | }
44 | ],
45 | "phone": "80811987291",
46 | "age": null
47 | },
48 | {
49 | "name": "Chris",
50 | "hobbies": [
51 | "Sports",
52 | "Cooking",
53 | "Hiking"
54 | ]
55 | }
56 | ])
--------------------------------------------------------------------------------
/week6/index-part1.1:
--------------------------------------------------------------------------------
1 | mongoimport persons.json -d people -c contacts --jsonArray --drop
2 |
3 | connected to: localhost
4 | dropping: people.contacts
5 | imported 5000 documents
6 |
7 | db.contacts.find({ "dob.age": {$gt: 50} }).count()
--------------------------------------------------------------------------------
/week6/index-part1.10:
--------------------------------------------------------------------------------
1 | db.contacts.explain().find({ "dob.age": 35 }).sort({ gender:1 })
2 |
3 | {
4 | "queryPlanner" : {
5 | "plannerVersion" : 1,
6 | "namespace" : "people.contacts",
7 | "indexFilterSet" : false,
8 | "parsedQuery" : {
9 | "dob.age" : {
10 | "$eq" : 35
11 | }
12 | },
13 | "winningPlan" : {
14 | "stage" : "FETCH",
15 | "inputStage" : {
16 | "stage" : "IXSCAN",
17 | "keyPattern" : {
18 | "dob.age" : 1,
19 | "gender" : 1
20 | },
21 | "indexName" : "dob.age_1_gender_1",
22 | "isMultiKey" : false,
23 | "multiKeyPaths" : {
24 | "dob.age" : [ ],
25 | "gender" : [ ]
26 | },
27 | "isUnique" : false,
28 | "isSparse" : false,
29 | "isPartial" : false,
30 | "indexVersion" : 2,
31 | "direction" : "forward",
32 | "indexBounds" : {
33 | "dob.age" : [
34 | "[35.0, 35.0]"
35 | ],
36 | "gender" : [
37 | "[MinKey, MaxKey]"
38 | ]
39 | }
40 | }
41 | },
42 | "rejectedPlans" : [ ]
43 | },
44 | "serverInfo" : {
45 | "host" : "snowball",
46 | "port" : 27017,
47 | "version" : "4.0.5",
48 | "gitVersion" : "3739429dd92b92d1b0ab120911a23d50bf03c412"
49 | },
50 | "ok" : 1
51 | }
52 |
53 | db.contacts.explain().find({ "dob.age": 35 }).sort({ gender: -1 })
--------------------------------------------------------------------------------
/week6/index-part1.11:
--------------------------------------------------------------------------------
1 | /* DuplicateKey issue */
2 |
3 | db.contacts.createIndex({ email:1 }, { unique: true })
4 |
5 | {
6 | "ok" : 0,
7 | "errmsg" : "E11000 duplicate key error collection: people.contacts index: email_1 dup key: { : \"abigail.clark@example.com\" }",
8 | "code" : 11000,
9 | "codeName" : "DuplicateKey"
10 | }
11 |
12 | db.contacts.find({ email: "abigail.clark@example.com" }).count()
--------------------------------------------------------------------------------
/week6/index-part1.12:
--------------------------------------------------------------------------------
1 | db.contacts.createIndex({ "dob.age" : 1 }, { partialFilterExpression: { gender: "male" }})
2 |
3 | db.contacts.explain().find({ "dob.age": {$gt: 60}, gender: "male" })
4 |
5 | db.contacts.explain().find({ "dob.age": {$gt: 60}, gender: "male" })
6 | {
7 | "queryPlanner" : {
8 | "plannerVersion" : 1,
9 | "namespace" : "people.contacts",
10 | "indexFilterSet" : false,
11 | "parsedQuery" : {
12 | "$and" : [
13 | {
14 | "gender" : {
15 | "$eq" : "male"
16 | }
17 | },
18 | {
19 | "dob.age" : {
20 | "$gt" : 60
21 | }
22 | }
23 | ]
24 | },
25 | "winningPlan" : {
26 | "stage" : "FETCH",
27 | "filter" : {
28 | "gender" : {
29 | "$eq" : "male"
30 | }
31 | },
32 | "inputStage" : {
33 | "stage" : "IXSCAN",
34 | "keyPattern" : {
35 | "dob.age" : 1
36 | },
37 | "indexName" : "dob.age_1",
38 | "isMultiKey" : false,
39 | "multiKeyPaths" : {
40 | "dob.age" : [ ]
41 | },
42 | "isUnique" : false,
43 | "isSparse" : false,
44 | "isPartial" : true,
45 | "indexVersion" : 2,
46 | "direction" : "forward",
47 | "indexBounds" : {
48 | "dob.age" : [
49 | "(60.0, inf.0]"
50 | ]
51 | }
52 | }
53 | },
54 | "rejectedPlans" : [ ]
55 | },
56 | "serverInfo" : {
57 | "host" : "snowball",
58 | "port" : 27017,
59 | "version" : "4.0.5",
60 | "gitVersion" : "3739429dd92b92d1b0ab120911a23d50bf03c412"
61 | },
62 | "ok" : 1
63 | }
64 |
65 | db.contacts.find({ "dob.age": {$gt: 60}, gender: "male" }).pretty()
--------------------------------------------------------------------------------
/week6/index-part1.2:
--------------------------------------------------------------------------------
1 | db.contacts.explain().find({ "dob.age": {$gt: 50} }).count()
2 |
3 | {
4 | "queryPlanner" : {
5 | "plannerVersion" : 1,
6 | "namespace" : "people.contacts",
7 | "indexFilterSet" : false,
8 | "parsedQuery" : {
9 | "dob.age" : {
10 | "$gt" : 50
11 | }
12 | },
13 | "winningPlan" : {
14 | "stage" : "COUNT",
15 | "inputStage" : {
16 | "stage" : "COLLSCAN",
17 | "filter" : {
18 | "dob.age" : {
19 | "$gt" : 50
20 | }
21 | },
22 | "direction" : "forward"
23 | }
24 | },
25 | "rejectedPlans" : [ ]
26 | },
27 | "serverInfo" : {
28 | "host" : "snowball",
29 | "port" : 27017,
30 | "version" : "4.0.5",
31 | "gitVersion" : "3739429dd92b92d1b0ab120911a23d50bf03c412"
32 | },
33 | "ok" : 1
34 | }
--------------------------------------------------------------------------------
/week6/index-part1.3:
--------------------------------------------------------------------------------
1 | db.contacts.explain().find({ "dob.age": {$gt: 50} }).count()
2 |
3 | {
4 | "queryPlanner" : {
5 | "plannerVersion" : 1,
6 | "namespace" : "people.contacts",
7 | "indexFilterSet" : false,
8 | "parsedQuery" : {
9 | "dob.age" : {
10 | "$gt" : 50
11 | }
12 | },
13 | "winningPlan" : {
14 | "stage" : "COUNT",
15 | "inputStage" : {
16 | "stage" : "COLLSCAN",
17 | "filter" : {
18 | "dob.age" : {
19 | "$gt" : 50
20 | }
21 | },
22 | "direction" : "forward"
23 | }
24 | },
25 | "rejectedPlans" : [ ]
26 | },
27 | "executionStats" : {
28 | "executionSuccess" : true,
29 | "nReturned" : 0,
30 | "executionTimeMillis" : 12,
31 | "totalKeysExamined" : 0,
32 | "totalDocsExamined" : 5000,
33 | "executionStages" : {
34 | "stage" : "COUNT",
35 | "nReturned" : 0,
36 | "executionTimeMillisEstimate" : 10,
37 | "works" : 5002,
38 | "advanced" : 0,
39 | "needTime" : 5001,
40 | "needYield" : 0,
41 | "saveState" : 39,
42 | "restoreState" : 39,
43 | "isEOF" : 1,
44 | "invalidates" : 0,
45 | "nCounted" : 2204,
46 | "nSkipped" : 0,
47 | "inputStage" : {
48 | "stage" : "COLLSCAN",
49 | "filter" : {
50 | "dob.age" : {
51 | "$gt" : 50
52 | }
53 | },
54 | "nReturned" : 2204,
55 | "executionTimeMillisEstimate" : 10,
56 | "works" : 5002,
57 | "advanced" : 2204,
58 | "needTime" : 2797,
59 | "needYield" : 0,
60 | "saveState" : 39,
61 | "restoreState" : 39,
62 | "isEOF" : 1,
63 | "invalidates" : 0,
64 | "direction" : "forward",
65 | "docsExamined" : 5000
66 | }
67 | }
68 | },
69 | "serverInfo" : {
70 | "host" : "snowball",
71 | "port" : 27017,
72 | "version" : "4.0.5",
73 | "gitVersion" : "3739429dd92b92d1b0ab120911a23d50bf03c412"
74 | },
75 | "ok" : 1
76 | }
--------------------------------------------------------------------------------
/week6/index-part1.4:
--------------------------------------------------------------------------------
1 | db.contacts.createIndex({ "dob.age": 1 })
2 |
3 | db.contacts.explain("executionStats").find({ "dob.age": {$gt: 50} }).count()
4 |
5 | {
6 | "queryPlanner" : {
7 | "plannerVersion" : 1,
8 | "namespace" : "people.contacts",
9 | "indexFilterSet" : false,
10 | "parsedQuery" : {
11 | "dob.age" : {
12 | "$gt" : 50
13 | }
14 | },
15 | "winningPlan" : {
16 | "stage" : "COUNT",
17 | "inputStage" : {
18 | "stage" : "COUNT_SCAN",
19 | "keyPattern" : {
20 | "dob.age" : 1
21 | },
22 | "indexName" : "dob.age_1",
23 | "isMultiKey" : false,
24 | "multiKeyPaths" : {
25 | "dob.age" : [ ]
26 | },
27 | "isUnique" : false,
28 | "isSparse" : false,
29 | "isPartial" : false,
30 | "indexVersion" : 2,
31 | "indexBounds" : {
32 | "startKey" : {
33 | "dob.age" : 50
34 | },
35 | "startKeyInclusive" : false,
36 | "endKey" : {
37 | "dob.age" : Infinity
38 | },
39 | "endKeyInclusive" : true
40 | }
41 | }
42 | },
43 | "rejectedPlans" : [ ]
44 | },
45 | "executionStats" : {
46 | "executionSuccess" : true,
47 | "nReturned" : 0,
48 | "executionTimeMillis" : 0,
49 | "totalKeysExamined" : 2205,
50 | "totalDocsExamined" : 0,
51 | "executionStages" : {
52 | "stage" : "COUNT",
53 | "nReturned" : 0,
54 | "executionTimeMillisEstimate" : 0,
55 | "works" : 2205,
56 | "advanced" : 0,
57 | "needTime" : 2204,
58 | "needYield" : 0,
59 | "saveState" : 17,
60 | "restoreState" : 17,
61 | "isEOF" : 1,
62 | "invalidates" : 0,
63 | "nCounted" : 2204,
64 | "nSkipped" : 0,
65 | "inputStage" : {
66 | "stage" : "COUNT_SCAN",
67 | "nReturned" : 2204,
68 | "executionTimeMillisEstimate" : 0,
69 | "works" : 2205,
70 | "advanced" : 2204,
71 | "needTime" : 0,
72 | "needYield" : 0,
73 | "saveState" : 17,
74 | "restoreState" : 17,
75 | "isEOF" : 1,
76 | "invalidates" : 0,
77 | "keysExamined" : 2205,
78 | "keyPattern" : {
79 | "dob.age" : 1
80 | },
81 | "indexName" : "dob.age_1",
82 | "isMultiKey" : false,
83 | "multiKeyPaths" : {
84 | "dob.age" : [ ]
85 | },
86 | "isUnique" : false,
87 | "isSparse" : false,
88 | "isPartial" : false,
89 | "indexVersion" : 2,
90 | "indexBounds" : {
91 | "startKey" : {
92 | "dob.age" : 50
93 | },
94 | "startKeyInclusive" : false,
95 | "endKey" : {
96 | "dob.age" : Infinity
97 | },
98 | "endKeyInclusive" : true
99 | }
100 | }
101 | }
102 | },
103 | "serverInfo" : {
104 | "host" : "snowball",
105 | "port" : 27017,
106 | "version" : "4.0.5",
107 | "gitVersion" : "3739429dd92b92d1b0ab120911a23d50bf03c412"
108 | },
109 | "ok" : 1
110 | }
--------------------------------------------------------------------------------
/week6/index-part1.5:
--------------------------------------------------------------------------------
1 | db.contacts.dropIndex({"dob.age":1})
--------------------------------------------------------------------------------
/week6/index-part1.6:
--------------------------------------------------------------------------------
1 | db.contacts.dropIndex({"dob.age":1})
2 |
3 | db.contacts.explain("executionStats").find({ "gender": "male" })
4 |
5 | /* generated output
6 | {
7 | "queryPlanner" : {
8 | "plannerVersion" : 1,
9 | "namespace" : "people.contacts",
10 | "indexFilterSet" : false,
11 | "parsedQuery" : {
12 | "gender" : {
13 | "$eq" : "male"
14 | }
15 | },
16 | "winningPlan" : {
17 | "stage" : "FETCH",
18 | "inputStage" : {
19 | "stage" : "IXSCAN",
20 | "keyPattern" : {
21 | "gender" : 1
22 | },
23 | "indexName" : "gender_1",
24 | "isMultiKey" : false,
25 | "multiKeyPaths" : {
26 | "gender" : [ ]
27 | },
28 | "isUnique" : false,
29 | "isSparse" : false,
30 | "isPartial" : false,
31 | "indexVersion" : 2,
32 | "direction" : "forward",
33 | "indexBounds" : {
34 | "gender" : [
35 | "[\"male\", \"male\"]"
36 | ]
37 | }
38 | }
39 | },
40 | "rejectedPlans" : [ ]
41 | },
42 | "executionStats" : {
43 | "executionSuccess" : true,
44 | "nReturned" : 2435,
45 | "executionTimeMillis" : 9,
46 | "totalKeysExamined" : 2435,
47 | "totalDocsExamined" : 2435,
48 | "executionStages" : {
49 | "stage" : "FETCH",
50 | "nReturned" : 2435,
51 | "executionTimeMillisEstimate" : 0,
52 | "works" : 2436,
53 | "advanced" : 2435,
54 | "needTime" : 0,
55 | "needYield" : 0,
56 | "saveState" : 19,
57 | "restoreState" : 19,
58 | "isEOF" : 1,
59 | "invalidates" : 0,
60 | "docsExamined" : 2435,
61 | "alreadyHasObj" : 0,
62 | "inputStage" : {
63 | "stage" : "IXSCAN",
64 | "nReturned" : 2435,
65 | "executionTimeMillisEstimate" : 0,
66 | "works" : 2436,
67 | "advanced" : 2435,
68 | "needTime" : 0,
69 | "needYield" : 0,
70 | "saveState" : 19,
71 | "restoreState" : 19,
72 | "isEOF" : 1,
73 | "invalidates" : 0,
74 | "keyPattern" : {
75 | "gender" : 1
76 | },
77 | "indexName" : "gender_1",
78 | "isMultiKey" : false,
79 | "multiKeyPaths" : {
80 | "gender" : [ ]
81 | },
82 | "isUnique" : false,
83 | "isSparse" : false,
84 | "isPartial" : false,
85 | "indexVersion" : 2,
86 | "direction" : "forward",
87 | "indexBounds" : {
88 | "gender" : [
89 | "[\"male\", \"male\"]"
90 | ]
91 | },
92 | "keysExamined" : 2435,
93 | "seeks" : 1,
94 | "dupsTested" : 0,
95 | "dupsDropped" : 0,
96 | "seenInvalidated" : 0
97 | }
98 | }
99 | },
100 | "serverInfo" : {
101 | "host" : "snowball",
102 | "port" : 27017,
103 | "version" : "4.0.5",
104 | "gitVersion" : "3739429dd92b92d1b0ab120911a23d50bf03c412"
105 | },
106 | "ok" : 1
107 | }
108 | */
--------------------------------------------------------------------------------
/week6/index-part1.7:
--------------------------------------------------------------------------------
1 | db.contacts.dropIndex({"gender": 1})
--------------------------------------------------------------------------------
/week6/index-part1.8:
--------------------------------------------------------------------------------
1 | db.contacts.createIndex({ "dob.age":1, gender:1 })
2 |
3 | db.contacts.explain().find({ "dob.age": 30, gender:"male" })
4 |
5 | {
6 | "queryPlanner" : {
7 | "plannerVersion" : 1,
8 | "namespace" : "people.contacts",
9 | "indexFilterSet" : false,
10 | "parsedQuery" : {
11 | "$and" : [
12 | {
13 | "dob.age" : {
14 | "$eq" : 30
15 | }
16 | },
17 | {
18 | "gender" : {
19 | "$eq" : "male"
20 | }
21 | }
22 | ]
23 | },
24 | "winningPlan" : {
25 | "stage" : "FETCH",
26 | "inputStage" : {
27 | "stage" : "IXSCAN",
28 | "keyPattern" : {
29 | "dob.age" : 1,
30 | "gender" : 1
31 | },
32 | "indexName" : "dob.age_1_gender_1",
33 | "isMultiKey" : false,
34 | "multiKeyPaths" : {
35 | "dob.age" : [ ],
36 | "gender" : [ ]
37 | },
38 | "isUnique" : false,
39 | "isSparse" : false,
40 | "isPartial" : false,
41 | "indexVersion" : 2,
42 | "direction" : "forward",
43 | "indexBounds" : {
44 | "dob.age" : [
45 | "[30.0, 30.0]"
46 | ],
47 | "gender" : [
48 | "[\"male\", \"male\"]"
49 | ]
50 | }
51 | }
52 | },
53 | "rejectedPlans" : [ ]
54 | },
55 | "serverInfo" : {
56 | "host" : "snowball",
57 | "port" : 27017,
58 | "version" : "4.0.5",
59 | "gitVersion" : "3739429dd92b92d1b0ab120911a23d50bf03c412"
60 | },
61 | "ok" : 1
62 | }
--------------------------------------------------------------------------------
/week6/index-part1.9:
--------------------------------------------------------------------------------
1 | db.contacts.explain().find({ "dob.age": 30})
2 |
3 | {
4 | "queryPlanner" : {
5 | "plannerVersion" : 1,
6 | "namespace" : "people.contacts",
7 | "indexFilterSet" : false,
8 | "parsedQuery" : {
9 | "dob.age" : {
10 | "$eq" : 30
11 | }
12 | },
13 | "winningPlan" : {
14 | "stage" : "FETCH",
15 | "inputStage" : {
16 | "stage" : "IXSCAN",
17 | "keyPattern" : {
18 | "dob.age" : 1,
19 | "gender" : 1
20 | },
21 | "indexName" : "dob.age_1_gender_1",
22 | "isMultiKey" : false,
23 | "multiKeyPaths" : {
24 | "dob.age" : [ ],
25 | "gender" : [ ]
26 | },
27 | "isUnique" : false,
28 | "isSparse" : false,
29 | "isPartial" : false,
30 | "indexVersion" : 2,
31 | "direction" : "forward",
32 | "indexBounds" : {
33 | "dob.age" : [
34 | "[30.0, 30.0]"
35 | ],
36 | "gender" : [
37 | "[MinKey, MaxKey]"
38 | ]
39 | }
40 | }
41 | },
42 | "rejectedPlans" : [ ]
43 | },
44 | "serverInfo" : {
45 | "host" : "snowball",
46 | "port" : 27017,
47 | "version" : "4.0.5",
48 | "gitVersion" : "3739429dd92b92d1b0ab120911a23d50bf03c412"
49 | },
50 | "ok" : 1
51 | }
52 |
53 | db.contacts.explain().find({ "gender": "male"})
54 |
55 | {
56 | "queryPlanner" : {
57 | "plannerVersion" : 1,
58 | "namespace" : "people.contacts",
59 | "indexFilterSet" : false,
60 | "parsedQuery" : {
61 | "gender" : {
62 | "$eq" : "male"
63 | }
64 | },
65 | "winningPlan" : {
66 | "stage" : "COLLSCAN",
67 | "filter" : {
68 | "gender" : {
69 | "$eq" : "male"
70 | }
71 | },
72 | "direction" : "forward"
73 | },
74 | "rejectedPlans" : [ ]
75 | },
76 | "serverInfo" : {
77 | "host" : "snowball",
78 | "port" : 27017,
79 | "version" : "4.0.5",
80 | "gitVersion" : "3739429dd92b92d1b0ab120911a23d50bf03c412"
81 | },
82 | "ok" : 1
83 | }
84 |
--------------------------------------------------------------------------------
/week7/index-part1.1:
--------------------------------------------------------------------------------
1 | use people
2 | db.createCollection('users')
3 |
4 | db.users.insertMany([ {name:'john', email: 'john@john.com' }, {name: 'Melvin'} ])
5 |
6 | db.users.createIndex( { email: 1 }, {unique: true } )
7 |
8 | db.users.insertOne({ name: 'Stacy' })
9 | 2019-03-07T13:58:29.622-0500 E QUERY [js] WriteError: E11000 duplicate key error collection: people.users index: email_1 dup key: { : null } :
10 | WriteError({
11 | "index" : 0,
12 | "code" : 1100 0,
13 | "errmsg" : "E11000 duplicate key error collection: people.users index: email_1 dup key: { : null }",
14 | "op" : {
15 | "_id" : ObjectId("5c8169d56333cb23e075cff3"),
16 | "name" : "Stacy"
17 | }
18 | })
19 |
20 | db.users.dropIndex( { email: 1 })
--------------------------------------------------------------------------------
/week7/index-part1.2:
--------------------------------------------------------------------------------
1 | db.createCollection('sessions')
2 |
3 | db.sessions.insertOne({ sessions: 'Some data' , "created_at_date": 1, expireAfterSeconds: 86400 })
--------------------------------------------------------------------------------
/week9/schemas1.1:
--------------------------------------------------------------------------------
1 | use shop
2 | db.createCollection('products')
3 | db.products.insertOne({ 'name' : 'Best of Python', 'price' : 49.99 })
4 |
5 | db.products.insertOne({
6 | name: "Gildan Men's Assorted Crew T-Shirt Multipack",
7 | price: 11.99,
8 | seller:
9 | {
10 | name:"Gildan",
11 | category: "t-shirts",
12 | }
13 | })
14 |
15 |
16 |
--------------------------------------------------------------------------------