deploy_mongo
deploy_mongo is db deploy tool for mongodb.
How to install
gem install deploy_mongo
Usage
deploy_mongo 'path/to/mongodb.yml' [rollback:(1|2|3|..|all)]
- rollback:all
-
rollbacks all the deltas
Example
-
deploy_mongo/spec/mongodb.yml for mongodb.yml config file
-
deploy_mongo/spec/integration/deltas for delta files
Config Parameters
-
hostname: mongodb database server hostname>
-
port: mongodb server port number , by default 27017
-
delta_path: path/to/deltas folder relative to mongodb.yml
-
database: <couchdb database name>
-
mongo_shell_path: full path to mongo shell (can be found in mongodb install folder/bin
Delta File name format
<Delta Number>_<Description>.js
example :- 1_add_address_to_customer.js
2_add_phone_to_customer.js
11_update_phone_with_std_codes.js
12_delete_customer_with_name_equal_to_name_1.js
13_copy_and_create_new_customer.js
Delta File content format
<java script command used to modify database>
//@undo
<java script rollback command used when rolling back applied delta.>
Delta File examples
Example for adding address field to all customers (1_add_address_to_customer.js)
db.customer.update({},{$set: {"address": "some address" } } , false , true );
//@undo
db.customer.update({},{$unset: {"address": 1}},false,true);
Example for modifying phone number of all customers (2_add_phone_to_customer.js)
db.customer.update({},{$set: {"phone": "897907979" } } , false , true )
//@undo
db.customer.update({},{$unset: {"phone": 1}},false,true)
Example for creating new document after copying details from another customer (13_copy_and_create_new_customer.js)
db.customer.find({ "name" : "name_2" }).forEach(create_customer);
function create_customer(doc){
delete doc._id;
doc.name = "new name";
db.customer.save(doc);
}
//@undo
db.customer.remove({"name" : "new name"})
Example for deleteing a document (12_delete_customer_with_name_equal_to_name_1.js)
db.customer.remove({ "name" : "name_1" });
//@undo
db.customer.save({"name" : "name_1", "address" : "some address" , "phone" : "+9168687868" });