3.8 KiB
////////////////////////////////////////////////////////////////////////////////
/// @startDocuBlock collectionProperties
/// @brief gets or sets the properties of a collection
/// collection.properties()
///
/// Returns an object containing all collection properties.
///
/// * waitForSync: If true creating a document will only return
/// after the data was synced to disk.
///
/// * journalSize : The size of the journal in bytes.
///
/// * isVolatile: If true then the collection data will be
/// kept in memory only and ArangoDB will not write or sync the data
/// to disk.
///
/// * keyOptions (optional) additional options for key generation. This is
/// a JSON array containing the following attributes (note: some of the
/// attributes are optional):
/// * type: the type of the key generator used for the collection.
/// * allowUserKeys: if set to true, then it is allowed to supply
/// own key values in the _key attribute of a document. If set to
/// false, then the key generator will solely be responsible for
/// generating keys and supplying own key values in the _key attribute
/// of documents is considered an error.
/// * increment: increment value for autoincrement key generator.
/// Not used for other key generator types.
/// * offset: initial offset value for autoincrement key generator.
/// Not used for other key generator types.
///
/// * indexBuckets: number of buckets into which indexes using a hash
/// table are split. The default is 16 and this number has to be a
/// power of 2 and less than or equal to 1024.
///
/// For very large collections one should increase this to avoid long pauses
/// when the hash table has to be initially built or resized, since buckets
/// are resized individually and can be initially built in parallel. For
/// example, 64 might be a sensible value for a collection with 100
/// 000 000 documents. Currently, only the edge index respects this
/// value, but other index types might follow in future ArangoDB versions.
/// Changes (see below) are applied when the collection is loaded the next
/// time.
///
/// In a cluster setup, the result will also contain the following attributes:
///
/// * numberOfShards: the number of shards of the collection.
///
/// * shardKeys: contains the names of document attributes that are used to
/// determine the target shard for documents.
///
/// collection.properties(properties)
///
/// Changes the collection properties. properties must be a object with
/// one or more of the following attribute(s):
///
/// * waitForSync: If true creating a document will only return
/// after the data was synced to disk.
///
/// * journalSize : The size of the journal in bytes.
///
/// * indexBuckets : See above, changes are only applied when the
/// collection is loaded the next time.
///
/// Note: it is not possible to change the journal size after the journal or
/// datafile has been created. Changing this parameter will only effect newly
/// created journals. Also note that you cannot lower the journal size to less
/// then size of the largest document already stored in the collection.
///
/// Note: some other collection properties, such as type, isVolatile,
/// or keyOptions cannot be changed once the collection is created.
///
/// @EXAMPLES
///
/// Read all properties
///
/// @EXAMPLE_ARANGOSH_OUTPUT{collectionProperties}
/// ~ db._create("example");
/// db.example.properties();
/// ~ db._drop("example");
/// @END_EXAMPLE_ARANGOSH_OUTPUT
///
/// Change a property
///
/// @EXAMPLE_ARANGOSH_OUTPUT{collectionProperty}
/// ~ db._create("example");
/// db.example.properties({ waitForSync : true });
/// ~ db._drop("example");
/// @END_EXAMPLE_ARANGOSH_OUTPUT
///
/// @endDocuBlock
////////////////////////////////////////////////////////////////////////////////