NAME

Arango::Tango::Collection - ArangoDB Collection object

VERSION

version 0.019

USAGE

This class should not be created directly. The Arango::Tango module is responsible for creating instances of this object.

Arango::Tango::Collection answers to the following methods:

load_indexes

$ans = $collection->load_indexes;

This route tries to cache all index entries of this collection into the main memory. Therefore it iterates over all indexes of the collection and stores the indexed values, not the entire document data, in memory.

info

$info = $collection->info;

The result is an object describing the collection.

checksum

$data = $collection->checksum;

Will calculate a checksum of the meta-data (keys and optionally revision ids) and optionally the document data in the collection.

count

$n = $collection->count;

In addition to the above checksum, the result also contains the number of documents.

document

$doc = $collection->document("doc_key");

Retrieves a document given a specific key. The header options are not supported yet.

figures

$figures = $collection->figures;

In addition to the above (count), the result also contains the number of documents and additional statistical information about the collection.

properties

$properties = $collection->properties;

In addition to the above, the result will always contain the waitForSync attribute, and the doCompact, journalSize, and isVolatile attributes for the MMFiles storage engine.

set_properties

$properties = $collection->set_properties( waitForSync => 1 );

Changes the properties of a collection.

revision

$rev = $collection->revision;

In addition to the above, the result will also contain the collection’s revision id. The revision id is a server-generated string that clients can use to check whether data in a collection has changed since the last revision check.

create_document

$collection->create_document( { 'Hello' => 'World' } );
$collection->create_document( q!"{ "Hello": "World" }! );

Stores a document in specified collection

replace_document

$collection->replace_document( $key,  { 'Hello' => 'World' } );

Replaces a document in specified collection

delete_document

$collection->delete_document($key);

Deletes a document in specified collection

truncate

$collection->truncate;

Removes all documents from the collection, but leaves the indexes intact.

rotate

$status = $collection->rotate;

Rotates the journal of a collection. The current journal of the collection will be closed and made a read-only datafile. The purpose of the rotate method is to make the data in the file available for compaction (compaction is only performed for read-only datafiles, and not for journals).

Note: this method is specific for the MMFiles storage engine, and there it is not available in a cluster.

rename

my $ans = $collection->rename("newName");

Renames a collection.

recalculate_count

my $ans = $collection->recalculate_count;

Recalculates the document count of a collection, if it ever becomes inconsistent.

Note: this method is specific for the RocksDB storage engine.

document_paths

my $paths = $collection->document_paths;

Lists all collection document as their paths in the database. Returns a hash reference.

get_access_level

my $perms = $db->get_access_level($user)

Fetch the collection access level for a specific user.

set_access_level

$db->set_access_level($user, 'none')

Sets the collection access level for a specific user.

clear_access_level

$db->clear_access_level($user, 'none')

Clears the collection access level for a specific user.

bulk_import

$collection->bulk_import([{_key => "something"}, {_key => "something else"}])

Imports a group of documents in a single call.

cursor

my $cursor = $collection->cursor( $aql_query, %opt );

Performs AQL queries, returning a cursor. An optional hash of options can be supplied. Supported hashes corresponds to the different attributes available in the ArangoDB REST API (https://docs.arangodb.com/3.4/HTTP/AqlQueryCursor/AccessingCursors.html).

AUTHOR

Alberto Simões <ambs@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2019-2023 by Alberto Simões.

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