NAME
MongoX::Helper - Helper to invoke MongoDB commands handy.
VERSION
version 0.05
SYNOPSIS
# default import common db_* helpers
use MongoX::Helper;
# or admin only command
use MongoX::Helper ':admin';
# explicit some command
use MongoX::Helper qw(db_count,db_find,admin_unlock,admin_shutdown_server);
# or all commands
use MongoX::Helper ':all';
DESCRIPTION
METHODS
admin_fsync_lock
my $ok = admin_fsync_lock;
call fsync_lock on current server.
admin_unlock
my $ok = admin_unlock;
call unlock on current server.
admin_server_status
my $result = admin_server_status;
print 'server uptime:',$result->{uptime};
Return current mongoDB server status.
admin_shutdown_server
admin_shutdown_server;
Shutdown current mongodb server.
admin_sharding_state
$result = admin_sharding_state;
Get sharding state.
admin_diag_logging
$result = admin_diag_logging;
print 'logging level:',$result->{was},"\n";
Get diag logging level.
db_stats
my $stats_info = db_stats;
Return current database stats information;
db_is_master
$ok = db_is_master;
Return if current server is master.
db_eval($code,$args?)
my $result = db_eval 'function(x) { return "hello, "+x; }', ["world"];
Evaluate a JavaScript expression on the Mongo server.
db_current_op
my $op = db_current_op;
Return current operation in the db.
db_filemd5($file_id)
$md5_hex = db_filemd5 $file_id;
return md5 hex value of the file.
db_re_index($collection_name?)
$ok = db_re_index;
rebuild the collection indexes (default collection is context_collection).
db_distinct
$result = db_distinct;
Performance a distinct query.
db_group
$result = db_group {
reduce => 'function(doc,prev){ prev[doc.name]++; }',
key => { key1 => 1,key2 => 1 },
initial => { counter => 0.0 }
};
# or
$result = db_group {
reduce => 'function(doc,prev){ prev[doc.name]++; }',
keyf => 'function(doc) { return {"x" : doc.x};',
initial => {counter => 0.0}
};
Returns an array of grouped items of current context collection. options:
- reduce
-
The reduce function aggregates (reduces) the objects iterated. Typical operations of a reduce function include summing and counting. reduce takes two arguments: the current document being iterated over and the aggregation counter object. In the example above, these arguments are named obj and prev.
- key
-
Fields to group by.
- keyf?
-
An optional function returning a "key object" to be used as the grouping key. Use this instead of key to specify a key that is not an existing member of the object (or, to access embedded members). Set in lieu of key.
- initial?
-
initial value of the aggregation counter object.
initial => { counter => 0.0 }
WARNING: As a known bug, in initial, if you assign a zero numberic value to some attribute, you must defined zero as float format, meant must be 0.0 but not 0, cause 0 will passed as boolean value, then you will got 'nan' value in retval.
- finalize?
-
An optional function to be run on each item in the result set just before the item is returned. Can either modify the item (e.g., add an average field given a count and a total) or return a replacement object (returning a new object with just _id and average fields).
more about group, see: http://www.mongodb.org/display/DOCS/Aggregation#Aggregation-Group.
db_map_reduce
$result = db_map_reduce { map => 'javascript function',reduce => 'javascript function' };
map, reduce, and finalize functions are written in JavaScript.
valid options are:
- map => mapfunction
- reduce => reducefunction
- query => query filter object
- sort => sort the query. useful for optimization
- limit => number of objects to return from collection
- out => output-collection name
- keeptemp => boolean
- finalize => finalizefunction
- scope => object where fields go into javascript global scope
- verbose => boolean
more about map/reduce, see: http://www.mongodb.org/display/DOCS/MapReduce.
db_run_command
my $result = db_run_command {dbstats:1};
Run the command on current database. shortcut of "run_command" in MongoDB::Database.
db_list_commands
my $command_list = db_list_commands;
foreach my $cmd (keys %{$command_list}) {
say 'Command name:',$cmd,"\n";
say 'adminOnly:' => $cmd->{adminOnly};
say 'help:' => $cmd->{help};
say 'lockType:' => $cmd->{lockType};
say 'slaveOk:' => $cmd->{slaveOk};
}
Get a hash reference of all db commands.
db_add_user($username,$password,$readonly?)
$ok = db_add_user('foo','12345');
Add user into current database.
db_remove_user($username)
$ok = db_remove_user $username;
Remove given user from current database.
db_find_and_modify($options)
my $next_val = db_find_and_modify {
query => { _id => 'foo'},
update => { '$inc' => { value => 1 } }
}
# simply remove the object to be returned
my $obj = db_find_and_modify({
query => { _id => 10 },
remove => 1
});
MongoDB 1.3+ supports a "find, modify, and return" command. This command can be used to atomically modify a document (at most one) and return it. Note:that the document returned will not include the modifications made on the update. The options can include 'sort' option which is useful when storing queue-like data.
option parameters
At least one of the update or remove parameters is required; the other arguments are optional.
query
-
A query selector document for matching the desired document. default is {}.
sort
-
if multiple docs match, choose the first one in the specified sort order as the object to manipulate. default is {}.
remove =
boolean>-
set to a true to remove the object before returning. default is false.
update
-
a modifier object. default is undef.
new =
boolean>-
set to true if you want to return the modified object rather than the original. Ignored for remove. default is false.
db_repair_database
my $result = db_repair_database;
print 'ok:'.$result->{ok};
Repair current database.
db_auth($username,$password,$is_digest)
$ok = db_auth 'pp', 'plain-text';
Attempts to authenticate for use of the current database with $username and $password. Shortcut of "authenticate" in MongoDB::Connection.
db_convert_to_capped($collection_name,$size)
db_convert_to_capped 'common_collection1',1024*1024*10;
Convert a normal collection to capped collection.
db_create_collection($name,$options?)
$result = db_create_collection 'foo',{ capped => 1 };
Explicit create a special (capped) collection.
db_insert(\%obj)
db_insert {name => 'ns',workhard => 'mongox' };
Implicit call context_collection-
insert>.
db_find($query?,$options?)
$cursor = db_find {name => 'foo'};
Implicit call context_collection-
find>.
db_find_all($query?,$options?)
@result = db_find_all {age => 30},{limit => 20};
Short of db_find()-
all>.
db_count($query?)
$total = db_count { name => 'foo' };
Implicit call context_collection-
count>.
db_increment($query,$increment_values,$options)
db_increment {name => 2},{ counter => 1, money => 10 },{upsert => 1};
Shortcut of '$inc' command.
db_update_set(\%criteria,\%set_object,\%options)
db_update_set {name => 'foo'},{new_location => 'Beijing'},{ upsert => 0 };
Shortcut for '$set' command.
db_update(\%criteria,\%new_object,\%options?)
db_update {_id => 5},{name => 'foo'};
Shortcut of "update" in MongoDB::Collection.
db_remove(\%criteria?,\%options?)
db_remove;
Shortcut of "remove" in MongoDB::Collection.
db_find_one(\%query?,\%options?)
$result = db_find_one {_id => 5};
Shortcut of "find_one" in MongoDB::Collection.
db_ensure_index(\%keys,\%options?)
$result = db_ensure_index { foo => 1, name => 1};
Shortcut of "ensure_index" in MongoDB::Collection.
db_drop_index($index_name)
db_drop_index { 'name_1' };
Shortcut of "drop_index" in MongoDB::Collection.
db_drop_indexes
db_drop_indexes;
Shortcut of "drop_indexes" in MongoDB::Collection.
db_get_indexes
db_get_indexes;
Shortcut of "get_indexes" in MongoDB::Collection.
db_find_by_id
my $row = db_find_by_id $oid_or_id_string
Quick find_one by _id.
db_remove_by_id
db_remove_by_id $oid_or_id_string
Quick remove by _id.
SEE ALSO
MongoDB Commands docs: http://www.mongodb.org/display/DOCS/Commands
AUTHOR
Pan Fan(nightsailer) <nightsailer at gmail dot com>
COPYRIGHT AND LICENSE
This software is copyright (c) 2010 by Pan Fan(nightsailer).
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.