Mongoose philosophy on being schema based

I am currently switching from Django to Node.js. In my django app I used MongoDB and still want to continue with it, reason being flexibility mongo offers (its schema-less).

I was going through mongoosejs. On mongoose website they have used three adjectives for mongoose which are flexible schema-based and feature-rich. After having a broader look at the documentation I have NO doubt that it is feature-rich (features are really impressive). But the other two adjectives seems to contradict from Mongodb philosophy. Mongodb quotes that its dynamic schema offers flexibility. And on the other hand Mongoose is schema based. So in actuality how flexible is Mongoose? I really liked mongodb dynamic schema and wish to have that. In short, how feasible is it to make minor alterations in my schema with Mongoose with pre-populated collections.

Also for curiosity sake, I have two queries (kind of related to this question only)

  1. can I set any field to undefined in Mongoose schema
  2. can I set any field to optional as in mongoengine (Python ORM for mongo).

There is some structure even in unstructured data, and there is some schema even if it is schemaless :)

Try to find what all schema you can use with mongoose. If most of your data is having fixed schema, you should use it!

If most of your data is schemaless, dont bother about mongoose!

Yes, it is contradictory, but at the end, rapid prototyping,performance matters! :-)