AnyMongo
view release on metacpan or search on metacpan
lib/AnyMongo/Collection.pm view on Meta::CPAN
package AnyMongo::Collection;
BEGIN {
$AnyMongo::Collection::VERSION = '0.03';
}
# ABSTRACT: Asynchronous MongoDB::Collection
use strict;
use warnings;
use namespace::autoclean;
use Tie::IxHash;
use boolean;
use Any::Moose;
has _database => (
is => 'ro',
isa => 'AnyMongo::Database',
required => 1,
);
has name => (
is => 'ro',
isa => 'Str',
required => 1,
);
has full_name => (
is => 'ro',
isa => 'Str',
lazy => 1,
builder => '_build_full_name',
);
sub _build_full_name {
my ($self) = @_;
my $name = $self->name;
my $db_name = $self->_database->name;
return "${db_name}.${name}";
}
sub to_index_string {
my $keys = shift;
my @name;
if (ref $keys eq 'ARRAY' || ref $keys eq 'HASH' ) {
while ((my $idx, my $d) = each(%$keys)) {
push @name, $idx;
push @name, $d;
}
}
elsif (ref $keys eq 'Tie::IxHash') {
my @ks = $keys->Keys;
my @vs = $keys->Values;
@vs = $keys->Values;
for (my $i=0; $i<$keys->Length; $i++) {
push @name, $ks[$i];
push @name, $vs[$i];
}
}
else {
confess 'expected Tie::IxHash, hash, or array reference for keys';
}
return join("_", @name);
}
sub find {
my ($self, $query, $attrs) = @_;
( run in 2.451 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )