The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

ArangoDB - ArangoDB client for Perl

SYNOPSIS

  use ArangoDB;
  
  my $db = ArangoDB->new(
      host       => 'localhost',
      port       => 8529,
      keep_alive => 1,
  );
  
  # Find or create collection
  my $foo = $db->('foo');
  
  # Create new document
  $foo->save({ x => 42, y => { a => 1, b => 2, } });
  $foo->save({ x => 1, y => { a => 1, b => 10, } });
  $foo->name('new_name'); # rename the collection
  
  # Create hash index.
  $foo->ensure_hash_index([qw/x y/]);
  
  # Simple query
  my $cursor = $db->('new_name')->by_example({ b => 2 });
  while( my $doc = $cursor->next ){
      # do something
  }
  
  # AQL
  my $cursor2 = $db->query( 
      'FOR u IN users FILTER u.age > @age SORT u.name ASC RETURN u' 
  )->bind( { age => 19 } )->execute();
  my $docs = $cursor2->all;

DESCRIPTION

This module is an ArangoDB's REST API client for Perl.

ArangoDB is a universal open-source database with a flexible data model for documents, graphs, and key-values.

More information: http://www.arangodb.org/

SUPPORT API VERSION

This supports ArangoDB API implementation 1.01.

METHODS

new($options)

Constructor.

$options is HASH reference.The attributes of $options are:

host

Hostname or IP address of ArangoDB server.

Default: localhost

port

Port number of ArangoDB server.

Default: 8529

timeout

Seconds of HTTP connection timeout.

Default: 300

keep_alive

If it is true, use HTTP Keep-Alive connection.

Default: false

auth_type

Authentication method. Supporting "Basic" only.

auth_user

User name for authentication

auth_passwd

Password for authentication

proxy

Proxy url for HTTP connection.

inet_aton

A callback function to customize name resolution. Takes two arguments: ($hostname, $timeout_in_seconds).

See Furl::HTTP.

collection($name)

Get or create a collection based on $name. Returns instance of ArangoDB::Collection.

If the Collection $name does not exist, Create it.

There is shorthand method for get collection instance.

    my $collection = $db->('collection-name');

create($name)

Create new collection. Returns instance of ArangoDB::Collection.

find($name)

Get a Collection based on $name. Returns instance of ArangoDB::Collection.

If the collection does not exist, returns undef.

collections()

Get all collections. Returns ARRAY reference.

query($query)

Get AQL statement handler. Returns instance of ArangoDB::Statement.

    my $sth = $db->query('FOR u IN users FILTER u.age > @age SORT u.name ASC RETURN u');

document($doc)

Get documnet in the collection based on $doc. Returns instance of ArangoDB::Document.

edge($edge)

Get edge in the collection. Returns instance of ArangoDB::Edge.

index($index_id)

Returns index object.(ArangoDB::Index::*)

See:

SEE ALSO

ArangoDB websie http://www.arangodb.org/

DEVELOPMENT

Repository

https://github.com/hideo55/p5-ArangoDB

AUTHOR

Hideaki Ohno <hide.o.j55 {at} gmail.com>

LICENSE

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.