From fc9d0775ab5ec94d7079ee510c3ca1b3f8a84125 Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Wed, 21 Oct 2015 11:19:14 +0200 Subject: [PATCH] add migration for lowercase version of emails and username --- .../20151021_usernames_emails_lowercase.js | 63 +++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 migrations/20151021_usernames_emails_lowercase.js diff --git a/migrations/20151021_usernames_emails_lowercase.js b/migrations/20151021_usernames_emails_lowercase.js new file mode 100644 index 0000000000..432d7eb650 --- /dev/null +++ b/migrations/20151021_usernames_emails_lowercase.js @@ -0,0 +1,63 @@ +/* + * Migrate email to lowerCase version and add auth.local.lowerCaseUsername email + */ + +var mongo = require('mongoskin'); +var async = require('async'); + +var dbserver = 'url'; +var dbname = 'dbname'; +var countUsers = 0; + +var db = mongo.db(dbserver + '/' + dbname + '?auto_reconnect'); +var dbUsers = db.collection('users'); + +console.log('Begins work on db'); + +function findUsers(gt){ + var query = {}; + if(gt) query._id = {$gt: gt}; + + console.log(query) + + dbUsers.find(query, { + fields: {_id: 1, auth: 1}, + limit: 10000, + sort: { + _id: 1 + } + }).toArray(function(err, users){ + if(err) throw err; + + var lastUser = null; + if(users.length === 10000){ + lastUser = users[users.length - 1]; + } + + async.eachLimit(users, 20, function(user, cb){ + countUsers++; + console.log('User: ', countUsers, user._id); + + var update = { + $set: {}; + }; + + if(user.auth && user.auth.local) { + if(user.auth.local.username) update['$set']['auth.local.lowerCaseUsername'] = user.auth.local.username.toLowerCase(); + if(user.auth.local.email) update['$set']['auth.local.email'] = user.auth.local.email.toLowerCase(); + } + + dbUsers.update({ + _id: user._id + }, update, cb); + }, function(err){ + if(err) throw err; + + if(lastUser && lastUser._id){ + findUsers(lastUser._id); + } + }); + }); +}; + +findUsers(); \ No newline at end of file