@13w/miri
Version:
MongoDB patch manager
54 lines (52 loc) • 1.77 kB
Markdown
#### Migration manager
### Migrations folder structure
* migrations/
* init/
* 01-create-collections.js
```javascript
db.createCollection('users');
db.createCollection('goods');
```
* 02-create-default-users.js
```javascript
db.users.insertOne({firstName: 'foo', lastName: 'zoo'});
db.users.insertOne({firstName: 'baz', lastName: 'poo'});
```
* 03-create-default-goods.js
```javascript
db.goods.insertOne({name: 'lemon'});
db.goods.insertOne({name: 'orange'});
```
* indexes/
* users.json
```json
[
{name: 1}
]
```
* goods.json
```json
[
[{name: 1}, { unique: true }]
]
```
* version-1/
* 01-02-2023-add-full-name.js
```javascript
export const test = () => db.users.countDocuments({ fullName: { $exists: false } });
export const up = () => db.users.updateMany({ fullName: { $exists: false } }, [{ $set: { fullName: { $concat: ['$firstName', ' ', '$lastName'] } } }])
export const down = () => db.users.updateMany({}, {$unset: { fullName: 1 }})
```
* 04-05-2023-add-user-age.js
```javascript
export const test = () => db.users.countDocuments({ age: { $exists: false } });
export const up => () => db.users.updateMany({ age: { $exists: false } }, {$set: { age: 135 }})
export const down = () => db.users.updateMany({}, {$unset: { age: 1 }})
```
* version-2/
* 05-08-2023-add-price-to-goods.js
```javascript
export const test = () => db.goods.countDocuments({ price: { $exists: false } });
export const up => () => db.goods.updateMany({ price: { $exists: false } }, { $set: {price: 12.24} })
export const down = () => db.goods.updateMany({}, {$unset: { price: 1 }})
```