8.7 KiB
layout | description |
---|---|
default | ArangoCursor instances provide an abstraction over the HTTP API's limitations |
Cursor API
ArangoCursor instances provide an abstraction over the HTTP API's limitations. Unless a method explicitly exhausts the cursor, the driver will only fetch as many batches from the server as necessary. Like the server-side cursors, ArangoCursor instances are incrementally depleted as they are read from.
ArangoDB arango = new ArangoDB.Builder().build();
ArangoDatabase db = arango.db("myDB");
ArangoCursor<Integer> cursor = db.query(
"FOR x IN 1..5 RETURN x", Integer.class
);
// query result list: [1, 2, 3, 4, 5]
Integer value = cursor.next();
assertThat(value, is(1));
// remaining result list: [2, 3, 4, 5]
ArangoCursor.hasNext
ArangoCursor.hasNext() : boolean
Returns true if the cursor has more elements in its current batch of results or the cursor on the server has more batches.
Examples
ArangoDB arango = new ArangoDB.Builder().build();
ArangoDatabase db = arango.db("myDB");
ArangoCursor<Integer> cursor = db.query("FOR x IN 1..5 RETURN x", Integer.class)
boolean hasNext = cursor.hasNext();
ArangoCursor.next
ArangoCursor.next() : T
Returns the next element of the query result. If the current element is the last element of the batch and the cursor on the server provides more batches, the next batch is fetched from the server.
Examples
ArangoDB arango = new ArangoDB.Builder().build();
ArangoDatabase db = arango.db("myDB");
ArangoCursor<Integer> cursor = db.query("FOR x IN 1..5 RETURN x", Integer.class)
Integer value = cursor.next();
assertThat(value, is(1));
ArangoCursor.first
ArangoCursor.first() : T
Returns the first element or {@code null} if no element exists.
Examples
ArangoDB arango = new ArangoDB.Builder().build();
ArangoDatabase db = arango.db("myDB");
ArangoCursor<Integer> cursor = db.query("RETURN 1", Integer.class)
Integer value = cursor.first();
assertThat(value, is(1));
ArangoCursor.foreach
ArangoCursor.foreach(Consumer<? super T> action) : void
Performs the given action for each element of the ArangoIterable
Arguments
-
action:
Consumer<? super T>
A action to perform on the elements
Examples
ArangoDB arango = new ArangoDB.Builder().build();
ArangoDatabase db = arango.db("myDB");
ArangoCursor<Integer> cursor = db.query("FOR x IN 1..5 RETURN x", Integer.class)
cursor.foreach(e -> {
// remaining results: [1, 2, 3, 4, 5]
});
ArangoCursor.map
ArangoCursor.map(Function<? super T, ? extends R> mapper) : ArangoIterable<R>
Returns a ArangoIterable consisting of the results of applying the given function to the elements of this ArangoIterable.
Arguments
-
mapper:
Function<? super T, ? extends R>
A function to apply to each element
Examples
ArangoDB arango = new ArangoDB.Builder().build();
ArangoDatabase db = arango.db("myDB");
ArangoCursor<Integer> cursor = db.query("FOR x IN 1..5 RETURN x", Integer.class)
cursor.map(e -> e * 10).foreach(e -> {
// remaining results: [10, 20, 30, 40, 50]
});
ArangoCursor.filter
ArangoCursor.filter(Predicate<? super T> predicate) : ArangoIterable<T>
Arguments
-
predicate:
Predicate<? super T>
A predicate to apply to each element to determine if it should be included
Examples
ArangoDB arango = new ArangoDB.Builder().build();
ArangoDatabase db = arango.db("myDB");
ArangoCursor<Integer> cursor = db.query("FOR x IN 1..5 RETURN x", Integer.class)
cursor.filter(e -> e < 4).foreach(e -> {
// remaining results: [1, 2, 3]
});
ArangoCursor.anyMatch
ArangoCursor.anyMatch(Predicate<? super T> predicate) : boolean
Returns whether any elements of this ArangoIterable match the provided predicate.
Arguments
-
predicate:
Predicate<? super T>
A predicate to apply to elements of this {@code ArangoIterable}
Examples
ArangoDB arango = new ArangoDB.Builder().build();
ArangoDatabase db = arango.db("myDB");
ArangoCursor<Integer> cursor = db.query("FOR x IN 1..5 RETURN x", Integer.class)
boolean match = cursor.anyMatch(e -> e == 3);
assertThat(match, is(true));
ArangoCursor.allMatch
ArangoCursor.anyMatch(Predicate<? super T> predicate) : boolean
Returns whether all elements of this ArangoIterable match the provided predicate.
Arguments
-
predicate:
Predicate<? super T>
A predicate to apply to elements of this {@code ArangoIterable}
Examples
ArangoDB arango = new ArangoDB.Builder().build();
ArangoDatabase db = arango.db("myDB");
ArangoCursor<Integer> cursor = db.query("FOR x IN 1..5 RETURN x", Integer.class)
boolean match = cursor.allMatch(e -> e <= 5);
assertThat(match, is(true));
ArangoCursor.noneMatch
ArangoCursor.noneMatch(Predicate<? super T> predicate) : boolean
Returns whether no elements of this ArangoIterable match the provided predicate.
Arguments
-
predicate:
Predicate<? super T>
A predicate to apply to elements of this {@code ArangoIterable}
Examples
ArangoDB arango = new ArangoDB.Builder().build();
ArangoDatabase db = arango.db("myDB");
ArangoCursor<Integer> cursor = db.query("FOR x IN 1..5 RETURN x", Integer.class)
boolean match = cursor.noneMatch(e -> e > 5);
assertThat(match, is(true));
ArangoCursor.collectInto
ArangoCursor.collectInto(R target) : R
Arguments
Iterates over all elements of this {@code ArangoIterable} and adds each to the given target.
-
target:
R <R extends Collection<? super T>>
The collection to insert into
Examples
ArangoDB arango = new ArangoDB.Builder().build();
ArangoDatabase db = arango.db("myDB");
ArangoCursor<Integer> cursor = db.query("FOR x IN 1..5 RETURN x", Integer.class)
Collection<Integer> list = cursor.collectInto(new ArrayList());
// -- or --
Collection<Integer> set = cursor.collectInto(new HashSet());
ArangoCursor.iterator
ArangoCursor.iterator() : Iterator<T>
Returns an iterator over elements of the query result.
Examples
ArangoDB arango = new ArangoDB.Builder().build();
ArangoDatabase db = arango.db("myDB");
ArangoCursor<Integer> cursor = db.query("FOR x IN 1..5 RETURN x", Integer.class)
Iterator<Integer> iterator = cursor.iterator();
ArangoCursor.asListRemaining
ArangoCursor.asListRemaining() : List<T>
Returns the remaining results as a List.
Examples
ArangoDB arango = new ArangoDB.Builder().build();
ArangoDatabase db = arango.db("myDB");
ArangoCursor<Integer> cursor = db.query("FOR x IN 1..5 RETURN x", Integer.class)
Collection<Integer> list = cursor.asListRemaining();
ArangoCursor.getCount
ArangoCursor.getCount() : Integer
Returns the total number of result documents available (only available if the query was executed with the count attribute set)
Examples
ArangoDB arango = new ArangoDB.Builder().build();
ArangoDatabase db = arango.db("myDB");
ArangoCursor<Integer> cursor = db.query("FOR x IN 1..5 RETURN x", new AqlQueryOptions().count(true), Integer.class)
Integer count = cursor.getCount();
assertThat(count, is(5));
ArangoCursor.count
ArangoCursor.count() : long
Returns the count of elements of this ArangoIterable.
Examples
ArangoDB arango = new ArangoDB.Builder().build();
ArangoDatabase db = arango.db("myDB");
ArangoCursor<Integer> cursor = db.query("FOR x IN 1..5 RETURN x", Integer.class)
long count = cursor.filter(e -> e < 4).count();
// remaining results: [1, 2, 3]
assertThat(count, is(3L));
ArangoCursor.getStats
ArangoCursor.getStats() : Stats
Returns extra information about the query result. For data-modification queries,
the stats will contain the number of modified documents and the number of
documents that could not be modified due to an error (if ignoreErrors
query option is specified).
Examples
ArangoDB arango = new ArangoDB.Builder().build();
ArangoDatabase db = arango.db("myDB");
ArangoCursor<Integer> cursor = db.query("FOR x IN 1..5 RETURN x", Integer.class)
Stats stats = cursor.getStats();
ArangoCursor.getWarnings
ArangoCursor.getWarnings() : Collection<Warning>
Returns warnings which the query could have been produced.
Examples
ArangoDB arango = new ArangoDB.Builder().build();
ArangoDatabase db = arango.db("myDB");
ArangoCursor<Integer> cursor = db.query("FOR x IN 1..5 RETURN x", Integer.class)
Collection<Warning> warnings = cursor.getWarnings();
ArangoCursor.isCached
ArangoCursor.isCached() : boolean
Indicating whether the query result was served from the query cache or not.
Examples
ArangoDB arango = new ArangoDB.Builder().build();
ArangoDatabase db = arango.db("myDB");
ArangoCursor<Integer> cursor = db.query("FOR x IN 1..5 RETURN x", Integer.class)
boolean cached = cursor.isCached();