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" });