Mongo console
db.serverStatus().storageEngine
You will see a response like…
{ "name" : "wiredTiger" }
To get more information about the engine (in this case wiredTiger)
db.serverStatus().wiredTiger
Mongo console
db.serverStatus().storageEngine
You will see a response like…
{ "name" : "wiredTiger" }
To get more information about the engine (in this case wiredTiger)
db.serverStatus().wiredTiger
This simple one liner will list all the collections along with the number of indexes it has.
db.getCollectionNames().forEach(function(collection) {print(collection + ": " + db[collection].getIndexes().length);});
More info here:
https://stackoverflow.com/questions/39952005/count-of-indexes-for-each-collection-in-mongodb
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
db.currentOp()
Operations running for over 5 seconds…
db.currentOp().inprog.forEach(function(op) { if (op.secs_running > 5) printjson(op); })
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/ } ] } )
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 5 seconds
db.system.profile.find( { millis : { $gt : 5000 } } ).pretty()
Ten recent operations that took over 15 seconds. Print only important fields.
db.system.profile.find({ millis: { $gt: 15000 } }, { ns: 1, query: 1, numYield: 1, millis: 1 }).limit(10).pretty();
More examples:
db.system.profile.find({ millis: { $gt: 5000 }, ts: { $gt: new Date(ISODate().getTime() - 1000 * 60 * 10) } }).limit(5).pretty(); db.system.profile.find({ millis: { $gt: 5000 }, ts: { $gt: new Date(ISODate().getTime() - 1000 * 60 * 10) } }, { op: 1, ns: 1, query: 1, numYield: 1, millis: 1, ts: 1 }).limit(5).pretty();
To change the size of the system.profile collection, you must:
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)
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