Library Version 12.1.3.0

Specifying Depth
Prev | Chapter 9. Key Ranges and Depth for Multi-Key Operations | Next

## Specifying Depth

When performing multi-key operations in the store, you can specify a depth of records to operate upon. That is, you can indicate whether you want to operate upon:

- The specified key and all its children.

- The specified key and its most immediate children.

- Only the immediate children of the specified key. (The specified key is omitted.)

- All of the children of the specified key. (The specified key is omitted.)

By default, multi-key operations operate upon the specified key and all of its children. To limit the operation to something else, such as just the key's immediate children, specify `Depth.CHILDREN_ONLY` to the operation's `Depth` parameter.

For example, suppose you were using the following keys:

    /Products/Hats/-/baseball
    /Products/Hats/-/baseball/longbill
    /Products/Hats/-/baseball/longbill/blue
    /Products/Hats/-/baseball/longbill/red
    /Products/Hats/-/baseball/shortbill
    /Products/Hats/-/baseball/shortbill/blue
    /Products/Hats/-/baseball/shortbill/red
    /Products/Hats/-/western
    /Products/Hats/-/western/felt
    /Products/Hats/-/western/felt/black
    /Products/Hats/-/western/felt/gray
    /Products/Hats/-/western/leather
    /Products/Hats/-/western/leather/black
    /Products/Hats/-/western/leather/gray

Further, suppose you wanted to retrieve just these records:

    /Products/Hats/-/baseball
    /Products/Hats/-/western

Then you could do this using `KVStore.multiGet()` with the appropriate `Depth` argument.

    package kvstore.basicExample;

    ...

    import oracle.kv.Depth;
    import oracle.kv.Key;
    import oracle.kv.RequestTimeoutException;
    import oracle.kv.Value;
    import oracle.kv.ValueVersion;

    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.SortedMap;

    ...

    ArrayList<String> majorComponents = new ArrayList<String>();

    ...

    // Define the major and minor path components for the key
    majorComponents.add("Product");
    majorComponents.add("Hats");

    // Create the retrieval key
    Key myKey = Key.createKey(majorComponents);

    // Now retrieve the records. Note that we do not show the creation of
    // the kvstore handle here.

    try {
        SortedMap<Key, ValueVersion> myRecords = null;

        myRecords = kvstore.multiGet(myKey,
                                     null,
                                     Depth.CHILDREN_ONLY);
    } catch (RequestTimeoutException re) {
        // The operation was not completed within the
        // timeout value
    }

Prev | Up | Next
Chapter 9. Key Ranges and Depth for Multi-Key Operations | Home | Chapter 10. Using Versions