File Coverage

blib/lib/MongoDB.pm
Criterion Covered Total %
statement 43 43 100.0
branch n/a
condition 3 4 75.0
subroutine 14 14 100.0
pod 1 1 100.0
total 61 62 98.3


line stmt bran cond sub pod time code
1             # Copyright 2009 - present MongoDB, Inc.
2             #
3             # Licensed under the Apache License, Version 2.0 (the "License");
4             # you may not use this file except in compliance with the License.
5             # You may obtain a copy of the License at
6             #
7             # http://www.apache.org/licenses/LICENSE-2.0
8             #
9             # Unless required by applicable law or agreed to in writing, software
10             # distributed under the License is distributed on an "AS IS" BASIS,
11             # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12             # See the License for the specific language governing permissions and
13             # limitations under the License.
14              
15 59     59   5115910 use 5.010001;
  59         671  
16 59     59   321 use strict;
  59         106  
  59         1341  
17 59     59   287 use warnings;
  59         100  
  59         2191  
18              
19             package MongoDB;
20             # ABSTRACT: Official MongoDB Driver for Perl
21              
22 59     59   20600 use version;
  59         87643  
  59         334  
23             our $VERSION = 'v2.2.1';
24              
25             # regexp_pattern was unavailable before 5.10, had to be exported to load the
26             # function implementation on 5.10, and was automatically available in 5.10.1
27 59     59   41154 use if ($] eq '5.010000'), 're', 'regexp_pattern';
  59         753  
  59         321  
28              
29 59     59   2376 use Carp ();
  59         119  
  59         1018  
30 59     59   43468 use MongoDB::MongoClient;
  59         268  
  59         13269  
31 59     59   35031 use MongoDB::Database;
  59         234  
  59         2439  
32 59     59   48719 use MongoDB::Collection;
  59         253  
  59         2508  
33 59     59   32484 use MongoDB::BulkWrite;
  59         238  
  59         2101  
34 59     59   467 use MongoDB::_Link;
  59         141  
  59         1297  
35 59     59   717 use MongoDB::_Protocol;
  59         135  
  59         1254  
36 59     59   336 use BSON::Types;
  59         144  
  59         13272  
37              
38             # regexp_pattern was unavailable before 5.10, had to be exported to load the
39             # function implementation on 5.10, and was automatically available in 5.10.1
40             if ( $] eq '5.010' ) {
41             require re;
42             re->import('regexp_pattern');
43             }
44              
45             #pod =method connect
46             #pod
47             #pod $client = MongoDB->connect(); # localhost, port 27107
48             #pod $client = MongoDB->connect($host_uri);
49             #pod $client = MongoDB->connect($host_uri, $options);
50             #pod
51             #pod This function returns a L object. The first parameter is
52             #pod used as the C argument and must be a host name or L
53             #pod URI|MongoDB::MongoClient/CONNECTION STRING URI>. The second argument is
54             #pod optional. If provided, it must be a hash reference of constructor arguments
55             #pod for L.
56             #pod
57             #pod If an error occurs, a L object will be thrown.
58             #pod
59             #pod B: To connect to a replica set, a replica set name must be provided.
60             #pod For example, if the set name is C<"setA">:
61             #pod
62             #pod $client = MongoDB->connect("mongodb://example.com/?replicaSet=setA");
63             #pod
64             #pod =cut
65              
66             sub connect {
67 114     114 1 137399 my ($class, $host, $options) = @_;
68 114   50     461 $host ||= "mongodb://localhost";
69 114   100     500 $options ||= {};
70 114         470 $options->{host} = $host;
71 114         2078 return MongoDB::MongoClient->new( $options );
72             }
73              
74             1;
75              
76             =pod
77              
78             =encoding UTF-8
79              
80             =head1 NAME
81              
82             MongoDB - Official MongoDB Driver for Perl
83              
84             =head1 VERSION
85              
86             version v2.2.1
87              
88             =head1 END OF LIFE NOTICE
89              
90             Version v2.2.0 is the final feature release of the MongoDB Perl driver.
91             The driver is now in a 12-month "sunset" period and will receive security
92             patches and critical bug fixes only. The Perl driver will be end-of-life
93             and unsupported on August 13, 2020.
94              
95             =head1 SYNOPSIS
96              
97             use MongoDB;
98              
99             my $client = MongoDB->connect('mongodb://localhost');
100             my $collection = $client->ns('foo.bar'); # database foo, collection bar
101             my $result = $collection->insert_one({ some => 'data' });
102             my $data = $collection->find_one({ _id => $result->inserted_id });
103              
104             =head1 DESCRIPTION
105              
106             This is the official Perl driver for L.
107             MongoDB is an open-source document database that provides high performance,
108             high availability, and easy scalability.
109              
110             A MongoDB server (or multi-server deployment) hosts a number of databases. A
111             database holds a set of collections. A collection holds a set of documents. A
112             document is a set of key-value pairs. Documents have dynamic schema. Using dynamic
113             schema means that documents in the same collection do not need to have the same
114             set of fields or structure, and common fields in a collection's documents may
115             hold different types of data.
116              
117             Here are some resources for learning more about MongoDB:
118              
119             =over 4
120              
121             =item *
122              
123             L
124              
125             =item *
126              
127             L
128              
129             =item *
130              
131             L
132              
133             =back
134              
135             To get started with the Perl driver, see these pages:
136              
137             =over 4
138              
139             =item *
140              
141             L
142              
143             =item *
144              
145             L
146              
147             =back
148              
149             Extensive documentation and support resources are available via the
150             L.
151              
152             =head1 USAGE
153              
154             The MongoDB driver is organized into a set of classes representing
155             different levels of abstraction and functionality.
156              
157             As a user, you first create and configure a L object
158             to connect to a MongoDB deployment. From that client object, you can get a
159             L object for interacting with a specific database.
160              
161             From a database object, you can get a L object for
162             CRUD operations on that specific collection, or a L
163             object for working with an abstract file system hosted on the database.
164             Each of those classes may return other objects for specific features or
165             functions.
166              
167             See the documentation of those classes for more details or the
168             L for an example.
169              
170             L objects are generated from a
171             L and allow for advanced consistency options, like
172             causal-consistency and transactions.
173              
174             =head2 Error handling
175              
176             Unless otherwise documented, errors result in fatal exceptions. See
177             L for a list of exception classes and error code
178             constants.
179              
180             =head1 METHODS
181              
182             =head2 connect
183              
184             $client = MongoDB->connect(); # localhost, port 27107
185             $client = MongoDB->connect($host_uri);
186             $client = MongoDB->connect($host_uri, $options);
187              
188             This function returns a L object. The first parameter is
189             used as the C argument and must be a host name or L
190             URI|MongoDB::MongoClient/CONNECTION STRING URI>. The second argument is
191             optional. If provided, it must be a hash reference of constructor arguments
192             for L.
193              
194             If an error occurs, a L object will be thrown.
195              
196             B: To connect to a replica set, a replica set name must be provided.
197             For example, if the set name is C<"setA">:
198              
199             $client = MongoDB->connect("mongodb://example.com/?replicaSet=setA");
200              
201             =begin Pod::Coverage
202              
203              
204              
205              
206             =end Pod::Coverage
207              
208             =head1 SEMANTIC VERSIONING SCHEME
209              
210             Starting with MongoDB C, the driver reverts to the more familiar
211             three-part version-tuple numbering scheme used by both Perl and MongoDB:
212             C
213              
214             =over 4
215              
216             =item *
217              
218             C will be incremented for incompatible API changes.
219              
220             =item *
221              
222             Even-value increments of C indicate stable releases with new functionality. C will be incremented for bug fixes.
223              
224             =item *
225              
226             Odd-value increments of C indicate unstable ("development") releases that should not be used in production. C increments have no semantic meaning; they indicate only successive development releases.
227              
228             =back
229              
230             See the Changes file included with releases for an indication of the nature of
231             changes involved.
232              
233             =head1 ENVIRONMENT VARIABLES
234              
235             If the C environment variable is true before the
236             MongoDB module is loaded, then its various classes will be generated with
237             internal type assertions enabled. This has a severe performance cost and
238             is not recommended for production use. It may be useful in diagnosing
239             bugs.
240              
241             If the C environment variable is true, then
242             deprecated methods will not issue warnings when used. (Normally, a
243             deprecation warning is issued once per call-site for deprecated methods.)
244              
245             =head1 THREADS
246              
247             Per L documentation, use of Perl threads is discouraged by the
248             maintainers of Perl and the MongoDB Perl driver does not test or provide support
249             for use with threads.
250              
251             =for :stopwords cpan testmatrix url annocpan anno bugtracker rt cpants kwalitee diff irc mailto metadata placeholders metacpan
252              
253             =head1 SUPPORT
254              
255             =head2 Bugs / Feature Requests
256              
257             Please report any bugs or feature requests through the issue tracker at L. You will be notified automatically of any progress on your issue.
258              
259             =head2 Source Code
260              
261             This is open source software. The code repository is available for public review and contribution under the terms of the license.
262             L
263              
264             git clone https://github.com/mongodb/mongo-perl-driver.git
265              
266             =head1 AUTHORS
267              
268             =over 4
269              
270             =item *
271              
272             David Golden
273              
274             =item *
275              
276             Rassi
277              
278             =item *
279              
280             Mike Friedman
281              
282             =item *
283              
284             Kristina Chodorow
285              
286             =item *
287              
288             Florian Ragwitz
289              
290             =back
291              
292             =head1 CONTRIBUTORS
293              
294             =for stopwords Andrew Page Andrey Khozov Ashley Willis Ask Bjørn Hansen Bernard Gorman Brendan W. McAdams Brian Moss Casey Rojas Christian Sturm Walde Colin Cyr Danny Raetzsch David Morrison Nadle Steinbrunner Storch diegok D. Ilmari Mannsåker Eric Daniels Finn Kempers (Shadowcat Systems Ltd) Gerard Goossen Glenn Fowler Graham Barr Hao Wu Harish Upadhyayula Jason Carey Toffaletti Johann Rolschewski John A. Kunze Joseph Harnish Josh Matthews Joshua Juran J. Stewart Kamil Slowikowski Ken Williams Matthew Shopsin Matt S Trout Michael Langner Rotmanov Mike Dirolf Mohammad Anwar Nickola Trupcheff Nigel Gregoire Niko Tyni Nuno Carvalho Orlando Vazquez Othello Maurer Pan Fan Pavel Denisov Rahul Dhodapkar Robert Sedlacek Robin Lee Roman Yerin Ronald J Kimball Ryan Chipman Slaven Rezic Stephen Oberholtzer Steve Sanbeg Stuart Watt Thomas Bloor Tobias Leich Uwe Voelker Wallace Reis Wan Bachtiar Whitney Jackson Xavier Guimard Xtreak Zhihong Zhang
295              
296             =over 4
297              
298             =item *
299              
300             Andrew Page
301              
302             =item *
303              
304             Andrey Khozov
305              
306             =item *
307              
308             Ashley Willis
309              
310             =item *
311              
312             Ask Bjørn Hansen
313              
314             =item *
315              
316             Bernard Gorman
317              
318             =item *
319              
320             Brendan W. McAdams
321              
322             =item *
323              
324             Brian Moss
325              
326             =item *
327              
328             Casey Rojas
329              
330             =item *
331              
332             Christian Hansen
333              
334             =item *
335              
336             Christian Sturm
337              
338             =item *
339              
340             Christian Walde
341              
342             =item *
343              
344             Colin Cyr
345              
346             =item *
347              
348             Danny Raetzsch
349              
350             =item *
351              
352             David Morrison
353              
354             =item *
355              
356             David Nadle
357              
358             =item *
359              
360             David Steinbrunner
361              
362             =item *
363              
364             David Storch
365              
366             =item *
367              
368             diegok
369              
370             =item *
371              
372             D. Ilmari Mannsåker
373              
374             =item *
375              
376             Eric Daniels
377              
378             =item *
379              
380             Finn Kempers (Shadowcat Systems Ltd)
381              
382             =item *
383              
384             Gerard Goossen
385              
386             =item *
387              
388             Glenn Fowler
389              
390             =item *
391              
392             Graham Barr
393              
394             =item *
395              
396             Hao Wu
397              
398             =item *
399              
400             Harish Upadhyayula
401              
402             =item *
403              
404             Jason Carey
405              
406             =item *
407              
408             Jason Toffaletti
409              
410             =item *
411              
412             Johann Rolschewski
413              
414             =item *
415              
416             John A. Kunze
417              
418             =item *
419              
420             Joseph Harnish
421              
422             =item *
423              
424             Josh Matthews
425              
426             =item *
427              
428             Joshua Juran
429              
430             =item *
431              
432             J. Stewart
433              
434             =item *
435              
436             Kamil Slowikowski
437              
438             =item *
439              
440             Ken Williams
441              
442             =item *
443              
444             Matthew Shopsin
445              
446             =item *
447              
448             Matt S Trout
449              
450             =item *
451              
452             Michael Langner
453              
454             =item *
455              
456             Michael Rotmanov
457              
458             =item *
459              
460             Mike Dirolf
461              
462             =item *
463              
464             Mohammad S Anwar
465              
466             =item *
467              
468             Nickola Trupcheff
469              
470             =item *
471              
472             Nigel Gregoire
473              
474             =item *
475              
476             Niko Tyni
477              
478             =item *
479              
480             Nuno Carvalho
481              
482             =item *
483              
484             Orlando Vazquez
485              
486             =item *
487              
488             Othello Maurer
489              
490             =item *
491              
492             Pan Fan
493              
494             =item *
495              
496             Pavel Denisov
497              
498             =item *
499              
500             Rahul Dhodapkar
501              
502             =item *
503              
504             Robert Sedlacek (Shadowcat Systems Ltd)
505              
506             =item *
507              
508             Robin Lee
509              
510             =item *
511              
512             Roman Yerin
513              
514             =item *
515              
516             Ronald J Kimball
517              
518             =item *
519              
520             Ryan Chipman
521              
522             =item *
523              
524             Slaven Rezic
525              
526             =item *
527              
528             Slaven Rezic
529              
530             =item *
531              
532             Stephen Oberholtzer
533              
534             =item *
535              
536             Steve Sanbeg
537              
538             =item *
539              
540             Stuart Watt
541              
542             =item *
543              
544             Thomas Bloor (Shadowcat Systems Ltd)
545              
546             =item *
547              
548             Tobias Leich
549              
550             =item *
551              
552             Uwe Voelker
553              
554             =item *
555              
556             Wallace Reis
557              
558             =item *
559              
560             Wan Bachtiar
561              
562             =item *
563              
564             Whitney Jackson
565              
566             =item *
567              
568             Xavier Guimard
569              
570             =item *
571              
572             Xtreak
573              
574             =item *
575              
576             Zhihong Zhang
577              
578             =back
579              
580             =head1 COPYRIGHT AND LICENSE
581              
582             This software is Copyright (c) 2019 by MongoDB, Inc.
583              
584             This is free software, licensed under:
585              
586             The Apache License, Version 2.0, January 2004
587              
588             =cut
589              
590             __END__