Ok, it looks like Mongo/MongoEngine's `save()` is not what we want for an update. It doesn't do what you think — it _does not_ behave like Python's `dict.update()`, updating specified fields while leaving the rest alone. Rather, it just replaces the document, wiping away any old fields. What this means is that fields we don't get from OpenData, eg. `professor_ids` or ratings, will be wiped away (and only restored when `update_mongo_course_rating()` and such functions are called in `aggregator.py`). However, this means there will be a few minutes where courses don't have ratings or professors, or if `update_courses()` is called last, it will be the inverse — there will be a few minutes where courses have ratings, while 23 hours where courses won't have ratings.

Mongo/MongoEngine really does not make updating easy. Let me look into this.