MongoDB: How to make all fields of a collection lowercase

This simple script has been tested on MongoDB 3.2. It should work on older versions of MongoDB as well.

db.collectionName.find( {}, { 'fieldName': 1 } ).forEach(function(doc) {
db.collectionName.update(
   { _id: doc._id},
   { $set : { 'fieldName' : doc.fieldName.toLowerCase() } },
   { multi: true }
)
});

To convert all fields inside of an array, use this trick… MongoDB: How to lower case all items of an array

MongoDB current operations and profiling

Current operations

db.currentOp()

Write operations waiting for a lock

db.currentOp(
  {
    "waitingForLock" : true,
    $or: [
      { "op" : { "$in" : [ "insert", "update", "remove" ] } },
      { "query.findandmodify": { $exists: true } }
    ]
  }
)

Operations that have never yielded

db.currentOp(
   {
     "active" : true,
     "numYields" : 0,
     "waitingForLock" : false
   }
)

Index creation operations

db.currentOp(
    {
      $or: [
        { op: "query", "query.createIndexes": { $exists: true } },
        { op: "insert", ns: /\.system\.indexes\b/ }
      ]
    }
)

Profiling Levels

  • 0 – the profiler is off, does not collect any data.
  • 1 – collects profiling data for slow operations only.
  • 2 – collects profiling data for all database operations.

Checking profiling level

db.getProfilingStatus()

Turn on profiling for operations taking more than 1 second (1000 milliseconds)

db.setProfilingLevel(1,1000)

Turn profiling off

db.setProfilingLevel(0)

5 most recent operations logged in the system.profile table

db.system.profile.find().limit(5).sort( { ts : -1 } ).pretty()

Recent operations that took longer than 2 seconds

db.system.profile.find( { millis : { $gt : 5 } } ).pretty()

 

To change the size of the system.profile collection, you must:

  1. Disable profiling.
  2. Drop the system.profile collection.
  3. Create a new system.profile collection.
  4. Re-enable profiling.

To create a new system.profile collections that’s 4000000 bytes, use the following sequence of operations

db.setProfilingLevel(0)
db.system.profile.drop()
db.createCollection( "system.profile", { capped: true, size:4000000 } )
db.setProfilingLevel(1)

 

Running MongoDB 2 and 3 on the same computer

Manually install (untar) MongoDB 2 and 3 into two different folders, for example

.../mongodb2
.../mongodb3

Create log and data folders for each version

.../mongodb2/log
.../mongodb2/data 
.../mongodb3/log
.../mongodb3/data

Create a conf file for each version.

.../mongodb2/data/mongod.conf
.../mongodb3/data/mongod.conf

Contents of these files can be something like

logpath=.../mongodb2/log/mongod.log
port=27017
dbpath=.../mongodb2/data
pidfilepath=.../mongodb2/mongod.pid

logpath=.../mongodb3/log/mongod.log
port=37017
dbpath=.../mongodb3/data
pidfilepath=.../mongodb3/mongod.pid

As you can see here, MongoDB 2 will be running on port 27017 and MongoDB 3 will be running on port 37017

No start each server with the following commands

.../mongodb2/bin/mongod  --config .../mongodb2/mongod.conf
.../mongodb3/bin/mongod  --config .../mongodb3/mongod.conf

That’s it🙂

Two different command line clients can be run as follows

.../mongodb2/bin/mongo --port 27017
.../mongodb3/bin/mongo --port 37017