Hacker News new | ask | show | jobs
by diverightin63 3920 days ago
So, one thing holding me back from using MongoDB (and thus Meteor) is a lack of understanding how schema can be managed.

Say in MongoDB you are storing documents in a collection such as { property: "" }, and decide you want to change that to { property2: "" }. Does that mean you have to script a change to every document to convert these objects?

3 comments

in this case "renaming a field" it would be something like

`Collection.rename('property', 'property2')`

my syntax may be slightly off since i mostly use mongo thru a ruby orm but the basic idea is the same.

we handle these things by having a tasks we run each deployment (named after the deployment version) with the necessary db changes.

That's not data management. That's schema management (migration).

And yes, you have to script a change to every document.

Right. And I see. Are these managed by something like migrations?
Meteor doesn't have migrations built in, but there is a package for it. https://atmospherejs.com/percolate/migrations
From my brief experience with Mongo no. But they are very easy to do in code.
As far as I know, this is an issue for every database, no? What are you currently using?
Except that in every other database a migration like that changes a column, that's it.

In MongoDB you have to manually walk all your objects and migrate them.

Well, in relational SQL you would just do an ALTER on the column name.