/usr/lib/x86_64-linux-gnu/perl5/5.26/MongoDB/QueryResult/Filtered.pm is in libmongodb-perl 1.8.1-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 | #
# Copyright 2014 MongoDB, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
use strict;
use warnings;
package MongoDB::QueryResult::Filtered;
# ABSTRACT: An iterator for Mongo query results with client-side filtering
use version;
our $VERSION = 'v1.8.1';
use Moo;
use Types::Standard qw(
CodeRef
);
extends 'MongoDB::QueryResult';
use namespace::clean;
# N.B.: _post_filter may also munge documents in addition to filtering;
# it *must* be run on all documents
has _post_filter => (
is => 'ro',
isa => CodeRef,
required => 1,
);
sub has_next {
my ($self) = @_;
my $limit = $self->_limit;
if ( $limit > 0 && ( $self->cursor_at + 1 ) > $limit ) {
$self->_kill_cursor;
return 0;
}
while ( !$self->_drained || $self->_get_more ) {
my $peek = $self->_docs->[0];
if ( $self->_post_filter->($peek) ) {
# if meets criteria, has_next is true
return 1;
}
else {
# otherwise throw it away and repeat
$self->_inc_cursor_at;
$self->_next_doc;
}
}
# ran out of docs, so nothing left
return 0;
}
sub all {
my ($self) = @_;
my @ret;
push @ret, grep { $self->_post_filter->($_) } $self->_drain_docs
while $self->has_next;
return @ret;
}
1;
__END__
=pod
=encoding UTF-8
=head1 NAME
MongoDB::QueryResult::Filtered - An iterator for Mongo query results with client-side filtering
=head1 VERSION
version v1.8.1
=for Pod::Coverage has_next
=head1 AUTHORS
=over 4
=item *
David Golden <david@mongodb.com>
=item *
Rassi <rassi@mongodb.com>
=item *
Mike Friedman <friedo@friedo.com>
=item *
Kristina Chodorow <k.chodorow@gmail.com>
=item *
Florian Ragwitz <rafl@debian.org>
=back
=head1 COPYRIGHT AND LICENSE
This software is Copyright (c) 2018 by MongoDB, Inc.
This is free software, licensed under:
The Apache License, Version 2.0, January 2004
=cut
|