MongoDB Profiler
database profiler is the process of examining the data available in existing database(s) and collecting statistics information about the database related action.
Link:
http://docs.mongodb.org/manual/tutorial/manage-the-database-profiler/
Profiling Stages,
You can retrieve update , remove and select queries but you will not be able to get more details about insert queries
The following profiling levels are available:
Level
Setting
0
Off. No profiling
1
Only includes “slow” operations ( default 100ms)
2
Includes all operations
This link will tell you profiler out put result details
http://docs.mongodb.org/manual/reference/database-profiler/
Here is the deal
How we can get latest or all operation query details from system.profiler collection
As an example,i'm using "test" database and "sample"
Limit(number) will limit your out put result. if you wan to get all out put remove ".limit()" function from the command.
Enable Profiler on test database
1) check existing profiler status
db.getProfilingLevel()
You will get 0,1 or 2
2) set profiling for all operations
db.setProfilingLevel(2)
{ "was" : 0, "slowms" : 100, "ok" : 1 }
3) check ur profiling state again,
db.getProfilingLevel()
Now I'm inserting data.
use test
db.sample.insert({_id:1 ,"text":"Sample Text"})
Here is there record in system.profile collection related to latest insert operation
db.system.profile.find({"op":"insert"}).sort({ts:-1}).limit(1).pretty()
{
"op" : "insert",
"ns" : "test.sample",
"ninserted" : 1,
"keyUpdates" : 0,
"numYield" : 0,
"lockStats" : {
"timeLockedMicros" : {
"r" : NumberLong(0),
"w" : NumberLong(1283230)
},
"timeAcquiringMicros" : {
"r" : NumberLong(0),
"w" : NumberLong(94889)
}
},
"millis" : 1291,
"ts" : ISODate("2014-07-15T05:19:57.958Z"),
"client" : "127.0.0.1",
"allUsers" : [ ],
"user" : ""
}
Now updating
db.sample.update({_id:1},{"Text":"Sample Text New"})
This what captured in system.profile collection
{
"op" : "update",
"ns" : "test.sample",
"query" : {
"_id" : 1
},
"updateobj" : {
"Text" : "Sample Text New"
},
"idhack" : true,
"moved" : true,
"nmoved" : 1,
"nupdated" : 1,
"keyUpdates" : 0,
"numYield" : 0,
"lockStats" : {
"timeLockedMicros" : {
"r" : NumberLong(0),
"w" : NumberLong(28005)
},
"timeAcquiringMicros" : {
"r" : NumberLong(0),
"w" : NumberLong(19)
}
},
"millis" : 28,
"ts" : ISODate("2014-07-15T05:57:32.157Z"),
"client" : "127.0.0.1",
"allUsers" : [ ],
"user" : ""
}
Remove document
db.sample.remove({_id:2})
db.system.profile.find({"op":"remove"}).sort({ts:-1}).limit(1).pretty()
{
"op" : "remove",
"ns" : "test.sample",
"query" : {
"_id" : 2
},
"ndeleted" : 1,
"keyUpdates" : 0,
"numYield" : 1,
"lockStats" : {
"timeLockedMicros" : {
"r" : NumberLong(0),
"w" : NumberLong(85442)
},
"timeAcquiringMicros" : {
"r" : NumberLong(0),
"w" : NumberLong(43545)
}
},
"millis" : 43,
"ts" : ISODate("2014-07-15T06:35:24.784Z"),
"client" : "127.0.0.1",
"allUsers" : [ ],
"user" : ""
}
Query collection
db.sample.find({_id:1})
db.system.profile.find({"op":"query"}).sort({ts:-2}).limit(1).pretty()
{
"op" : "query",
"ns" : "test.system.profile",
"query" : {
"query" : {
"op" : "query"
},
"orderby" : {
"ts" : -2
}
},
"ntoreturn" : 1,
"ntoskip" : 0,
"nscanned" : 114,
"scanAndOrder" : true,
"keyUpdates" : 0,
"numYield" : 0,
"lockStats" : {
"timeLockedMicros" : {
"r" : NumberLong(931),
"w" : NumberLong(0)
},
"timeAcquiringMicros" : {
"r" : NumberLong(7),
"w" : NumberLong(6)
}
},
"nreturned" : 1,
"responseLength" : 400,
"millis" : 0,
"ts" : ISODate("2014-07-15T06:53:58.221Z"),
"client" : "127.0.0.1",
"allUsers" : [ ],
"user" : ""
}