AnyMongo
view release on metacpan or search on metacpan
lib/AnyMongo/Database.pm view on Meta::CPAN
package AnyMongo::Database;
BEGIN {
$AnyMongo::Database::VERSION = '0.03';
}
# ABSTRACT: Asynchronous MongoDB::Database
use strict;
use warnings;
use namespace::autoclean;
use Any::Moose;
use constant {
SYSTEM_NAMESPACE_COLLECTION => "system.namespaces",
SYSTEM_INDEX_COLLECTION => "system.indexes",
SYSTEM_PROFILE_COLLECTION => "system.profile",
SYSTEM_USER_COLLECTION => "system.users",
SYSTEM_JS_COLLECTION => "system.js",
SYSTEM_COMMAND_COLLECTION => '$cmd',
};
has _connection => (
is => 'ro',
isa => 'AnyMongo::Connection',
required => 1,
);
has name => (
is => 'ro',
isa => 'Str',
required => 1,
);
sub BUILD {
my ($self) = @_;
Any::Moose::load_class("AnyMongo::Collection");
}
sub collection_ns {
my ($self,$collection_name) = @_;
return $self->name.'.'.$collection_name;
}
sub collection_names {
my ($self) = @_;
my $it = $self->get_collection('system.namespaces')->query({});
return map {
substr($_, length($self->name) + 1)
} map { $_->{name} } $it->all;
}
sub get_collection {
my ($self, $collection_name) = @_;
return AnyMongo::Collection->new(
_database => $self,
name => $collection_name,
);
}
sub get_gridfs {
my ($self, $prefix) = @_;
$prefix = "fs" unless $prefix;
my $files = $self->get_collection("${prefix}.files");
my $chunks = $self->get_collection("${prefix}.chunks");
return AnyMongo::GridFS->new(
_database => $self,
files => $files,
chunks => $chunks,
( run in 0.707 second using v1.01-cache-2.11-cpan-39bf76dae61 )