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 )