Get Documents Command
There are a few methods that allow you to retrieve documents from a database:
- Get single document
- Get multiple documents
- Get paged documents
- Get documents by starts with
- Get metadata only
Get single document
GetDocumentsCommand can be used to retrieve a single document
Syntax
public GetDocumentsCommand(String id, String[] includes, boolean metadataOnly)
Parameter | Type | Description |
---|---|---|
id | String |
ID of the documents to get. |
includes | String[] |
Related documents to fetch along with the document. |
metadataOnly | boolean |
Whether to fetch the whole document or just the metadata. |
Example
GetDocumentsCommand command = new GetDocumentsCommand(
"orders/1-A", null, false);
session.advanced().getRequestExecutor().execute(command);
ObjectNode order = (ObjectNode) command.getResult().getResults().get(0);
Get multiple documents
GetDocumentsCommand can also be used to retrieve a list of documents.
Syntax
public GetDocumentsCommand(String[] ids, String[] includes, boolean metadataOnly)
Parameter | Type | Description |
---|---|---|
ids | String[] |
IDs of the documents to get. |
includes | String |
Related documents to fetch along with the documents. |
metadataOnly | boolean |
Whether to fetch whole documents or just the metadata. |
Example I
GetDocumentsCommand command = new GetDocumentsCommand(
new String[]{"orders/1-A", "employees/3-A"}, null, false);
session.advanced().getRequestExecutor().execute(command);
ObjectNode order = (ObjectNode) command.getResult().getResults().get(0);
ObjectNode employee = (ObjectNode) command.getResult().getResults().get(1);
Example II - Using Includes
// Fetch emploees/5-A and his boss.
GetDocumentsCommand command = new GetDocumentsCommand(
"employees/5-A", new String[]{"ReportsTo"}, false);
session.advanced().getRequestExecutor().execute(command);
ObjectNode employee = (ObjectNode) command.getResult().getResults().get(0);
String bossId = employee.get("ReportsTo").asText();
ObjectNode boss = (ObjectNode) command.getResult().getIncludes().get(bossId);
Example III - Missing Documents
// Assuming that products/9999-A doesn't exist.
GetDocumentsCommand command = new GetDocumentsCommand(
new String[]{"products/1-A", "products/9999-A", "products/3-A"}, null, false);
session.advanced().getRequestExecutor().execute(command);
ArrayNode products = command.getResult().getResults(); // products/1-A, null, products/3-A
Get paged documents
GetDocumentsCommand can also be used to retrieve a paged set of documents.
Syntax
public GetDocumentsCommand(int start, int pageSize)
Parameter | Type | Description |
---|---|---|
start | int |
Number of documents that should be skipped. |
pageSize | int |
Maximum number of documents that will be retrieved. |
Example
GetDocumentsCommand command = new GetDocumentsCommand(0, 128);
session.advanced().getRequestExecutor().execute(command);
ArrayNode firstDocs = command.getResult().getResults();
Get by starts with
GetDocumentsCommand can be used to retrieve multiple documents for a specified ID prefix.
Syntax
public GetDocumentsCommand(
String startWith,
String startAfter,
String matches,
String exclude,
int start,
int pageSize,
boolean metadataOnly)
Parameter | Type | Description |
---|---|---|
startsWith | String |
Prefix for which documents should be returned. |
startAfter | String |
Skip 'document fetching' until the given ID is found, and return documents after that ID (default: null). |
matches | String |
Pipe ('|') separated values for which document IDs (after 'startsWith') should be matched ('?' any single character, '*' any characters). |
exclude | String |
Pipe ('|') separated values for which document IDs (after 'startsWith') should not be matched ('?' any single character, '*' any characters). |
start | int |
Number of documents that should be skipped. |
pageSize | int |
Maximum number of documents that will be retrieved. |
metadataOnly | boolean |
Specifies whether or not only document metadata should be returned. |
Example I
GetDocumentsCommand command = new GetDocumentsCommand(
"products", //startWith
null, //startAfter
null, // matches
null, //exclude
0, // start
128, // pageSize
false //metadataOnly
);
session.advanced().getRequestExecutor().execute(command);
ArrayNode products = command.getResult().getResults();
Example II
// return up to 128 documents with key that starts with 'products/'
// and rest of the key begins with "1" or "2", eg. products/10, products/25
GetDocumentsCommand command = new GetDocumentsCommand(
"products", //startWith
null, // startAfter
"1*|2*", // matches
null, // exclude
0, //start
128, //pageSize
false); //metadataOnly
Example III
// return up to 128 documents with key that starts with 'products/'
// and rest of the key have length of 3, begins and ends with "1"
// and contains any character at 2nd position e.g. products/101, products/1B1
GetDocumentsCommand command = new GetDocumentsCommand(
"products", //startWith
null, // startAfter
"1?1", // matches
null, // exclude
0, //start
128, //pageSize
false); //metadataOnly
session.advanced().getRequestExecutor().execute(command);
ArrayNode products = command.getResult().getResults();
Get metadata only
GetDocumentsCommand can be used to retrieve the metadata of documents.
Example
GetDocumentsCommand command = new GetDocumentsCommand("orders/1-A", null, true);
session.advanced().getRequestExecutor().execute(command);
JsonNode result = command.getResult().getResults().get(0);
ObjectNode documentMetadata = (ObjectNode) result.get("@metadata");
// Print out all the metadata properties.
Iterator<String> fieldIterator = documentMetadata.fieldNames();
while (fieldIterator.hasNext()) {
String field = fieldIterator.next();
JsonNode value = documentMetadata.get(field);
System.out.println(field + " = " + value);
}