While working on Kids In Touch, I've picked up a little bit of MongoDB knowledge from working with Kinvey's collectionAccess module. However, I never really knew exactly what I was doing or how to design the schema within the Kinvey Console.

Generally, Kinvey steers a developer towards using their "collection" datastores and a REST API (or JavaScript, Java, iOS, etc wrapper). This works well for standard CRUD style apps such as customer management, product lists, etc. Unfortunately, it hides the real capabilities of MongoDB's document store design. The Kinvey API CAN expose all of this MongoDB goodness, but I feel it really tries to put you in the Third Normalized Form sort of database schema such as you'd use for a relational database. At least, that's the direction I was going with my app until I started to wise up about MongoDB's capabilities. Maybe someone that knew more NoSQL than RDBMS wouldn't have made my mistake.

However, the collectionAccess module in Kinvey allows the developer to work directly with the underlying MongoDB instance. Of course, with great access comes great risk. So, I decided I'd better actually learn more about MongoDB before I screw something up. Most importantly, I need to know how to design the schema for my application.

So, I signed up for MongoDB's excellent MongoDB for Node.js Developers course. Unfortunately, I didn't get around to actually completing the first two weeks of lessons and homework until after the homework was due. Oops. So, I got zeroes for those two assignments. Now, I am all caught up and have completed the homework for Week 3.

I must say, I'm impressed. The course walked me through my first MongoDB installation, through the mongo console, into Node.js, and on with creating a blog. In just a few days, I feel extremely productive with MongoDB. The instructors have done an excellent job with this course.

I'm now modelling the Kids In Touch application in a local MongoDB instance instead of trial and erroring it via the Kinvey Console. Once I'm all done and tested all the data access methods, I'll roll it up into Kinvey and be all done.

I would highly recommend the MongoDB course to anyone working with Kinvey. Yes, Kinvey can hide all the ugly details from you and make it easy to spin up some amazing apps with zero DB knowledge. However, if you really need to do some complicated things in your app, you probably need to bone up on MongoDB and start using the Kinvey collectionAccess module in Custom Endpoints or Collection Hooks.