Dynamic schemas (e.g. like customizing a jira issue)

How do you do a dynamic schema when using something like mongoose?

For example, jira will let you add custom fields to your jira tickets… you choose the name of the field and decide if its text/datepicker/number etc.

Another example is asana’s new todo lists that let you add a column (see plus sign in upper right)

How would one account for this in something like mongoose that expects the schema be setup prior to building?

Maybe an array of objects on a Todo called “customFields”: [{ “value”: ‘9/10/16’, label: ‘due date’, ‘type’: ‘String’]?

Never thought about this before, so looking for some ideas.