Class ExpressionSpecBuilder
- java.lang.Object
-
- com.amazonaws.services.dynamodbv2.xspec.ExpressionSpecBuilder
-
- All Implemented Interfaces:
Cloneable
@Beta public final class ExpressionSpecBuilder extends Object implements Cloneable
A request-centric Expression Specification Builder that can be used to construct valid expressions, and the respective name maps and value maps, for various DynamoDB requests in a typeful manner. This includes Update expression, Condition expression (including Filter expression and Key Condition expression), and Projection expression. This class is the API entry point to this library.This builder object is not thread-safe but you can reuse or build on (the specific states of) a builder by cloning it into separate instances for use in a concurrent environment.
Sample Usage 1: Conditional Updates with Expressions
import static com.amazonaws.services.dynamodbv2.xspec.ExpressionSpecBuilder.*; ... Table table = dynamo.getTable(TABLE_NAME); UpdateItemExpressionSpec xspec = new ExpressionSpecBuilder() // SET num1 = num1 + 20 .addUpdate( N("num1").set(N("num1").plus(20))) // SET string-attr = "string-value" .addUpdate( S("string-attr").set("string-value") ) // num2 BETWEEN 0 AND 100 .withCondition( N("num2").between(0, 100) ).buildForUpdate(); table.updateItem(HASH_KEY_NAME, "hashKeyValue", RANGE_KEY_NAME, 0, xspec);
Sample Usage 2: Conditional Updates with complex Condition Expression
Let's say you want to include a complex condition expression such as:
(attribute_not_exists(item_version) AND attribute_not_exists(config_id) AND attribute_not_exists(config_version)) OR (item_version < 123) OR (item_version = 123 AND config_id < 456) OR (item_version = 123 AND config_id = 456 AND config_version < 999)
Here is how:import static com.amazonaws.services.dynamodbv2.xspec.ExpressionSpecBuilder.*; ... Table table = dynamo.getTable(TABLE_NAME); UpdateItemExpressionSpec xspec = new ExpressionSpecBuilder() // SET num1 = num1 + 20 .addUpdate( N("num1").set(N("num1").plus(20))) // SET string-attr = "string-value" .addUpdate( S("string-attr").set("string-value") ) // a complex condition expression (as shown above) .withCondition( // add explicit parenthesis parenthesize( attribute_not_exists("item_version") .and( attribute_not_exists("config_id") ) .and( attribute_not_exists("config_version") ) ).or( N("item_version").lt(123) ) .or( N("item_version").eq(123) .and( N("config_id").lt(456) ) ) .or( N("item_version").eq(123) .and( N("config_id").eq(456) ) .and( N("config_version").lt(999) )) ).buildForUpdate(); table.updateItem(HASH_KEY_NAME, "hashKeyValue", RANGE_KEY_NAME, 0, xspec);
Sample Usage 3: Scan with Filter Expression
Without ExpressionSpecBuilder, the code (using the DynamoDB Document API) could be something like:
ItemCollection<?> col = table.scan( "(#hk = :hashkeyAttrValue) AND (#rk BETWEEN :lo AND :hi)", new NameMap().with("#hk", HASH_KEY_NAME).with("#rk", RANGE_KEY_NAME), new ValueMap().withString(":hashkeyAttrValue", "allDataTypes") .withInt(":lo", 1).withInt(":hi", 10));
In contrast, using ExpressionSpecBuilder:import static com.amazonaws.services.dynamodbv2.xspec.ExpressionSpecBuilder.*; ... ScanExpressionSpec xspec = new ExpressionSpecBuilder() .withCondition( S(HASH_KEY_NAME).eq("allDataTypes") .and(N(RANGE_KEY_NAME).between(1, 10)) ).buildForScan(); ItemCollection> col = table.scan(xspec);
Sample Usage 4: Updates with SET, ADD, DELETE and REMOVE
import static com.amazonaws.services.dynamodbv2.xspec.ExpressionSpecBuilder.*; ... Table table = dynamo.getTable(TABLE_NAME); UpdateItemExpressionSpec xspec = new ExpressionSpecBuilder() .addUpdate(S("mapAttr.colors[0]").set("red")) .addUpdate(S("mapAttr.colors[1]").set("blue")) .addUpdate(L("mapAttr.members").set( L("mapAttr.members").listAppend("marry", "liza"))) .addUpdate(SS("mapAttr.countries").append("cn", "uk")) .addUpdate(SS("mapAttr.brands").delete("Facebook", "LinkedIn")) .addUpdate(attribute("mapAttr.foo").remove()) .buildForUpdate(); assertEquals("SET #0.#1[0] = :0, #0.#1[1] = :1, #0.#2 = list_append(#0.#2, :2) ADD #0.#3 :3 DELETE #0.#4 :4 REMOVE #0.#5", xspec.getUpdateExpression()); final String hashkey = "addRemoveDeleteColors"; table.updateItem(HASH_KEY_NAME, hashkey, RANGE_KEY_NAME, 0, xspec);
- See Also:
PathOperand
-
-
Constructor Summary
Constructors Constructor Description ExpressionSpecBuilder()
Constructs a request-centric Expression Specification Builder that can be used to construct valid expressions, and the respective name maps and value maps, for various DynamoDB requests in a typeful manner.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static <T> ParenthesizedCondition
_(Condition condition)
A short hand for callingparenthesize(Condition)
to explicitly parenthesize a given condition for building condition expressions.ExpressionSpecBuilder
addProjection(String path)
Fluent API to add the given attribute to the list of projection of a request.ExpressionSpecBuilder
addProjections(String... paths)
Fluent API to add the given attributes to the list of projection of a request.ExpressionSpecBuilder
addUpdate(UpdateAction updateAction)
Fluent API to add the given Update expression for a request.static PathOperand
attribute(String path)
Returns a path operand that refers to an attribute of some unspecified data type; used for building expressions.static <T> FunctionCondition
attribute_exists(PathOperand pathOperand)
Returns a function condition (that evaluates to true if the attribute of the specified path operand exists) for building condition expression.static <T> FunctionCondition
attribute_exists(String path)
Returns a function condition (that evaluates to true if the attribute at the specified path exists) for building condition expression.static FunctionCondition
attribute_not_exists(PathOperand pathOperand)
Returns a function condition (that evaluates to true if the attribute of the specified path operand does not exist) for building condition expression.static FunctionCondition
attribute_not_exists(String path)
Returns a function condition (that evaluates to true if the attribute at the specified path does not exist) for building condition expression.static B
B(String path)
Creates a path operand that refers to a binary attribute for the purpose of building expressions.static BOOL
BOOL(String path)
Creates a path operand that refers to a boolean attribute for the purpose of building expressions.static BS
BS(String path)
Creates a path operand that refers to a binary-set attribute for the purpose of building expressions.DeleteItemExpressionSpec
buildForDeleteItem()
Returns an expression specification for use in aDeleteItem
request to DynamoDB.GetItemExpressionSpec
buildForGetItem()
Returns an expression specification for use in aGetItem
request to DynamoDB.PutItemExpressionSpec
buildForPut()
Returns an expression specification for use in aPutItem
request to DynamoDB.QueryExpressionSpec
buildForQuery()
Returns an expression specification for use in a query request to DynamoDB.ScanExpressionSpec
buildForScan()
Returns an expression specification for use in a scan request to DynamoDB.UpdateItemExpressionSpec
buildForUpdate()
Returns an expression specification for use in anUpdateItem
request to DynamoDB.ExpressionSpecBuilder
clone()
static IfNotExistsFunction<BOOL>
if_not_exists(String path, boolean defaultValue)
Returns anIfNotExists
object which represents an if_not_exists(path, operand) function call; used for building expression.static IfNotExistsFunction<B>
if_not_exists(String path, byte[] defaultValue)
Returns anIfNotExists
object which represents an if_not_exists(path, operand) function call; used for building expression.static IfNotExistsFunction<BS>
if_not_exists(String path, byte[]... defaultValue)
Returns anIfNotExists
object which represents an if_not_exists(path, operand) function call; used for building expression.static IfNotExistsFunction<N>
if_not_exists(String path, Number defaultValue)
Returns anIfNotExists
object which represents an if_not_exists(path, operand) function call; used for building expression.static IfNotExistsFunction<NS>
if_not_exists(String path, Number... defaultValue)
Returns anIfNotExists
object which represents an if_not_exists(path, operand) function call; used for building expression.static IfNotExistsFunction<S>
if_not_exists(String path, String defaultValue)
Returns anIfNotExists
object which represents an if_not_exists(path, operand) function call; used for building expression.static IfNotExistsFunction<SS>
if_not_exists(String path, String... defaultValue)
Returns anIfNotExists
object which represents an if_not_exists(path, operand) function call; used for building expression.static IfNotExistsFunction<B>
if_not_exists(String path, ByteBuffer defaultValue)
Returns anIfNotExists
object which represents an if_not_exists(path, operand) function call; used for building expression.static IfNotExistsFunction<BS>
if_not_exists(String path, ByteBuffer... defaultValue)
Returns anIfNotExists
object which represents an if_not_exists(path, operand) function call; used for building expression.static IfNotExistsFunction<L>
if_not_exists(String path, List<?> defaultValue)
Returns anIfNotExists
object which represents an if_not_exists(path, operand) function call; used for building expression.static IfNotExistsFunction<M>
if_not_exists(String path, Map<String,?> defaultValue)
Returns anIfNotExists
object which represents an if_not_exists(path, operand) function call; used for building expression.static L
L(String path)
Creates a path operand that refers to a list attribute for the purpose of building expressions.static <T> ListAppendFunction
list_append(String path, List<? extends T> value)
Returns aListAppend
object which represents a list_append(operand, operand) function call; used for building expression.static <T> ListAppendFunction
list_append(String path, T value)
Returns aListAppend
object which represents a list_append(operand, operand) function call; used for building expression.static <T> ListAppendFunction
list_append(List<? extends T> value, String path)
Returns aListAppend
object which represents a list_append(operand, operand) function call; used for building expression.static M
M(String path)
Creates a path operand that refers to a map attribute for the purpose of building expressions.static N
N(String path)
Creates a path operand that refers to a number attribute for the purpose of building expressions.static <T> NegationCondition
not(Condition cond)
Returns a negation of the specified condition; used for building condition expression.static NS
NS(String path)
Creates a path operand that refers to a number-set attribute for the purpose of building expressions.static NULL
NULL(String path)
Creates a path operand that refers to a NULL attribute for the purpose of building expressions.static <T> ParenthesizedCondition
parenthesize(Condition condition)
Returns an explicitly parenthesized condition, ie '(' condition ')' used in building condition expressions.static RemoveAction
remove(String path)
Returns aRemoveAction
for removing the attribute with the specified path from an item; used for building update expression.static S
S(String path)
Creates a path operand that refers to a string attribute for the purpose of building expressions.static SS
SS(String path)
Creates a path operand that refers to a string-set attribute for the purpose of building expressions.ExpressionSpecBuilder
withCondition(Condition condition)
Fluent API to set the condition expression for a request.ExpressionSpecBuilder
withKeyCondition(Condition keyCondition)
-
-
-
Constructor Detail
-
ExpressionSpecBuilder
public ExpressionSpecBuilder()
Constructs a request-centric Expression Specification Builder that can be used to construct valid expressions, and the respective name maps and value maps, for various DynamoDB requests in a typeful manner. This includes Update expression, Condition expression (including Filter expression and Key Condition expression), and Projection expression. This class is the API entry point to this library.This builder object is not thread-safe but you can reuse or build on (the specific states of) a builder by cloning it into separate instances for use in a concurrent environment.
Sample Usage: Query with Filter Expression
import static com.amazonaws.services.dynamodbv2.xspec.ExpressionSpecBuilder.*; ... Table table = dynamo.getTable(TABLE_NAME); QueryExpressionSpec xspec = new ExpressionSpecBuilder() .addProjections("numberAttr", "stringAttr") .withCondition(BOOL("booleanTrue").eq(true) .and(S("mapAttr.key1").eq("value1")) ).buildForQuery(); ItemCollection> col = table.query(HASH_KEY_NAME, "allDataTypes", new RangeKeyCondition("range_key_name").between(1, 10), xspec);
Sample Usage: Conditional Updates with Expressions
import static com.amazonaws.services.dynamodbv2.xspec.ExpressionSpecBuilder.*; ... Table table = dynamo.getTable(TABLE_NAME); UpdateItemExpressionSpec xspec = new ExpressionSpecBuilder() // SET num1 = num1 + 20 .addUpdate( N("num1").set(N("num1").plus(20))) // SET string-attr = "string-value" .addUpdate( S("string-attr").set("string-value") ) // num2 BETWEEN 0 AND 100 .withCondition( N("num2").between(0, 100) ).buildForUpdate(); table.updateItem(HASH_KEY_NAME, "hashKeyValue", RANGE_KEY_NAME, 0, xspec);
Sample Usage: Scan with Filter Expression
Without ExpressionSpecBuilder, the code (using the DynamoDB Document API) could be something like:
ItemCollection<?> col = table.scan( "(#hk = :hashkeyAttrValue) AND (#rk BETWEEN :lo AND :hi)", new NameMap().with("#hk", HASH_KEY_NAME).with("#rk", RANGE_KEY_NAME), new ValueMap().withString(":hashkeyAttrValue", "allDataTypes") .withInt(":lo", 1).withInt(":hi", 10));
In contrast, using ExpressionSpecBuilder:import static com.amazonaws.services.dynamodbv2.xspec.ExpressionSpecBuilder.*; ... ScanExpressionSpec xspec = new ExpressionSpecBuilder() .withCondition( S(HASH_KEY_NAME).eq("allDataTypes") .and(N(RANGE_KEY_NAME).between(1, 10)) ).buildForScan(); ItemCollection> col = table.scan(xspec);
Sample Usage: Conditional Updates with Expressions
import static com.amazonaws.services.dynamodbv2.xspec.ExpressionSpecBuilder.*; ... Table table = dynamo.getTable(TABLE_NAME); UpdateItemExpressionSpec xspec = new ExpressionSpecBuilder() // SET num1 = num1 + 20 .addUpdate( N("num1").set(N("num1").plus(20))) // SET string-attr = "string-value" .addUpdate( S("string-attr").set("string-value") ) // num2 BETWEEN 0 AND 100 .withCondition( N("num2").between(0, 100) ).buildForUpdate(); table.updateItem(HASH_KEY_NAME, "hashKeyValue", RANGE_KEY_NAME, 0, xspec);
Sample Usage: Conditional Updates with complex Condition Expression
Let's say you want to include a complex condition expression such as:
(attribute_not_exists(item_version) AND attribute_not_exists(config_id) AND attribute_not_exists(config_version)) OR (item_version < 123) OR (item_version = 123 AND config_id < 456) OR (item_version = 123 AND config_id = 456 AND config_version < 999)
Here is how:import static com.amazonaws.services.dynamodbv2.xspec.ExpressionSpecBuilder.*; ... Table table = dynamo.getTable(TABLE_NAME); UpdateItemExpressionSpec xspec = new ExpressionSpecBuilder() // SET num1 = num1 + 20 .addUpdate( N("num1").set(N("num1").plus(20))) // SET string-attr = "string-value" .addUpdate( S("string-attr").set("string-value") ) // a complex condition expression (as shown above) .withCondition( // add explicit parenthesis parenthesize( attribute_not_exists("item_version") .and( attribute_not_exists("config_id") ) .and( attribute_not_exists("config_version") ) ).or( N("item_version").lt(123) ) .or( N("item_version").eq(123) .and( N("config_id").lt(456) ) ) .or( N("item_version").eq(123) .and( N("config_id").eq(456) ) .and( N("config_version").lt(999) )) ).buildForUpdate(); table.updateItem(HASH_KEY_NAME, "hashKeyValue", RANGE_KEY_NAME, 0, xspec);
Sample Usage: Updates with SET, ADD, DELETE and REMOVE
import static com.amazonaws.services.dynamodbv2.xspec.ExpressionSpecBuilder.*; ... Table table = dynamo.getTable(TABLE_NAME); UpdateItemExpressionSpec xspec = new ExpressionSpecBuilder() .addUpdate(S("mapAttr.colors[0]").set("red")) .addUpdate(S("mapAttr.colors[1]").set("blue")) .addUpdate(L("mapAttr.members").set( L("mapAttr.members").listAppend("marry", "liza"))) .addUpdate(SS("mapAttr.countries").append("cn", "uk")) .addUpdate(SS("mapAttr.brands").delete("Facebook", "LinkedIn")) .addUpdate(attribute("mapAttr.foo").remove()) .buildForUpdate(); assertEquals("SET #0.#1[0] = :0, #0.#1[1] = :1, #0.#2 = list_append(#0.#2, :2) ADD #0.#3 :3 DELETE #0.#4 :4 REMOVE #0.#5", xspec.getUpdateExpression()); final String hashkey = "addRemoveDeleteColors"; table.updateItem(HASH_KEY_NAME, hashkey, RANGE_KEY_NAME, 0, xspec);
- See Also:
PathOperand
-
-
Method Detail
-
addUpdate
public ExpressionSpecBuilder addUpdate(UpdateAction updateAction)
Fluent API to add the given Update expression for a request.For example:
import static com.amazonaws.services.dynamodbv2.xspec.ExpressionSpecBuilder.*; ... builder // SET num1 = num1 + 20 .addUpdate( N("num1").set(N("num1").plus(20))) // SET string-attr = "string-value" .addUpdate( S("string-attr").set("string-value") )
-
withCondition
public ExpressionSpecBuilder withCondition(Condition condition)
Fluent API to set the condition expression for a request.For example:
import static com.amazonaws.services.dynamodbv2.xspec.ExpressionSpecBuilder.*; ... builder.withCondition( // num2 BETWEEN 0 AND 100 ExpressionSpecBuilder.N("num2").between(0, 100) ) ...
Example of specifying a complex condition:import static com.amazonaws.services.dynamodbv2.xspec.ExpressionSpecBuilder.*; ... // A complex condition expression: // // (attribute_not_exists(item_version) AND attribute_not_exists(config_id) AND attribute_not_exists(config_version)) OR // (item_version < 123) OR // (item_version = 123 AND config_id < 456) OR // (item_version = 123 AND config_id = 456 AND config_version < 999) // builder.withCondition( // add explicit parenthesis parenthesize( attribute_not_exists("item_version") .and( attribute_not_exists("config_id") ) .and( attribute_not_exists("config_version") ) ).or( N("item_version").lt(123) ) .or( N("item_version").eq(123) .and( N("config_id").lt(456) ) ) .or( N("item_version").eq(123) .and( N("config_id").eq(456) ) .and( N("config_version").lt(999) )) ) ...
-
withKeyCondition
public ExpressionSpecBuilder withKeyCondition(Condition keyCondition)
-
addProjection
public ExpressionSpecBuilder addProjection(String path)
Fluent API to add the given attribute to the list of projection of a request. For example:builder.addProjection("binarySetAttribute") .addProjection("listAttr[0]") .addProjection("mapAttr.name") .addProjection("stringSetAttr") ;
-
addProjections
public ExpressionSpecBuilder addProjections(String... paths)
Fluent API to add the given attributes to the list of projection of a request. For example:builder.addProjections("binarySetAttribute", "listAttr[0]", "mapAttr.name", "stringSetAttr");
-
buildForDeleteItem
public DeleteItemExpressionSpec buildForDeleteItem()
Returns an expression specification for use in aDeleteItem
request to DynamoDB.
-
buildForGetItem
public GetItemExpressionSpec buildForGetItem()
Returns an expression specification for use in aGetItem
request to DynamoDB.
-
buildForQuery
public QueryExpressionSpec buildForQuery()
Returns an expression specification for use in a query request to DynamoDB.
-
buildForScan
public ScanExpressionSpec buildForScan()
Returns an expression specification for use in a scan request to DynamoDB.
-
buildForUpdate
public UpdateItemExpressionSpec buildForUpdate()
Returns an expression specification for use in anUpdateItem
request to DynamoDB.
-
buildForPut
public PutItemExpressionSpec buildForPut()
Returns an expression specification for use in aPutItem
request to DynamoDB.
-
clone
public ExpressionSpecBuilder clone()
-
if_not_exists
public static IfNotExistsFunction<N> if_not_exists(String path, Number defaultValue)
Returns anIfNotExists
object which represents an if_not_exists(path, operand) function call; used for building expression."if_not_exists (path, operand) – If the item does not contain an attribute at the specified path, then if_not_exists evaluates to operand; otherwise, it evaluates to path. You can use this function to avoid overwriting an attribute already present in the item."
- Parameters:
path
- document path to an attributedefaultValue
- default value if the attribute doesn't exist- Returns:
- an
IfNotExists
object for number (N) attribute.
-
if_not_exists
public static IfNotExistsFunction<B> if_not_exists(String path, byte[] defaultValue)
Returns anIfNotExists
object which represents an if_not_exists(path, operand) function call; used for building expression."if_not_exists (path, operand) – If the item does not contain an attribute at the specified path, then if_not_exists evaluates to operand; otherwise, it evaluates to path. You can use this function to avoid overwriting an attribute already present in the item."
- Parameters:
path
- document path to an attributedefaultValue
- default value if the attribute doesn't exist- Returns:
- an
IfNotExists
object for binary (B) attribute.
-
if_not_exists
public static IfNotExistsFunction<B> if_not_exists(String path, ByteBuffer defaultValue)
Returns anIfNotExists
object which represents an if_not_exists(path, operand) function call; used for building expression."if_not_exists (path, operand) – If the item does not contain an attribute at the specified path, then if_not_exists evaluates to operand; otherwise, it evaluates to path. You can use this function to avoid overwriting an attribute already present in the item."
- Parameters:
path
- document path to an attributedefaultValue
- default value if the attribute doesn't exist- Returns:
- an
IfNotExists
object for binary (B) attribute.
-
if_not_exists
public static IfNotExistsFunction<BOOL> if_not_exists(String path, boolean defaultValue)
Returns anIfNotExists
object which represents an if_not_exists(path, operand) function call; used for building expression."if_not_exists (path, operand) – If the item does not contain an attribute at the specified path, then if_not_exists evaluates to operand; otherwise, it evaluates to path. You can use this function to avoid overwriting an attribute already present in the item."
- Parameters:
path
- document path to an attributedefaultValue
- default value if the attribute doesn't exist- Returns:
- an
IfNotExists
object for boolean (BOOL) attribute.
-
if_not_exists
public static IfNotExistsFunction<BS> if_not_exists(String path, byte[]... defaultValue)
Returns anIfNotExists
object which represents an if_not_exists(path, operand) function call; used for building expression."if_not_exists (path, operand) – If the item does not contain an attribute at the specified path, then if_not_exists evaluates to operand; otherwise, it evaluates to path. You can use this function to avoid overwriting an attribute already present in the item."
- Parameters:
path
- document path to an attributedefaultValue
- default value if the attribute doesn't exist- Returns:
- an
IfNotExists
object for binary set (BS) attribute.
-
if_not_exists
public static IfNotExistsFunction<BS> if_not_exists(String path, ByteBuffer... defaultValue)
Returns anIfNotExists
object which represents an if_not_exists(path, operand) function call; used for building expression."if_not_exists (path, operand) – If the item does not contain an attribute at the specified path, then if_not_exists evaluates to operand; otherwise, it evaluates to path. You can use this function to avoid overwriting an attribute already present in the item."
- Parameters:
path
- document path to an attributedefaultValue
- default value if the attribute doesn't exist- Returns:
- an
IfNotExists
object for binary set (BS) attribute.
-
if_not_exists
public static IfNotExistsFunction<L> if_not_exists(String path, List<?> defaultValue)
Returns anIfNotExists
object which represents an if_not_exists(path, operand) function call; used for building expression."if_not_exists (path, operand) – If the item does not contain an attribute at the specified path, then if_not_exists evaluates to operand; otherwise, it evaluates to path. You can use this function to avoid overwriting an attribute already present in the item."
- Parameters:
path
- document path to an attributedefaultValue
- default value if the attribute doesn't exist- Returns:
- an
IfNotExists
object for list (L) attribute.
-
if_not_exists
public static IfNotExistsFunction<M> if_not_exists(String path, Map<String,?> defaultValue)
Returns anIfNotExists
object which represents an if_not_exists(path, operand) function call; used for building expression."if_not_exists (path, operand) – If the item does not contain an attribute at the specified path, then if_not_exists evaluates to operand; otherwise, it evaluates to path. You can use this function to avoid overwriting an attribute already present in the item."
- Parameters:
path
- document path to an attributedefaultValue
- default value if the attribute doesn't exist- Returns:
- an
IfNotExists
object for map (M) attribute.
-
if_not_exists
public static IfNotExistsFunction<NS> if_not_exists(String path, Number... defaultValue)
Returns anIfNotExists
object which represents an if_not_exists(path, operand) function call; used for building expression."if_not_exists (path, operand) – If the item does not contain an attribute at the specified path, then if_not_exists evaluates to operand; otherwise, it evaluates to path. You can use this function to avoid overwriting an attribute already present in the item."
- Parameters:
path
- document path to an attributedefaultValue
- default value if the attribute doesn't exist- Returns:
- an
IfNotExists
object for number set (NS) attribute.
-
if_not_exists
public static IfNotExistsFunction<S> if_not_exists(String path, String defaultValue)
Returns anIfNotExists
object which represents an if_not_exists(path, operand) function call; used for building expression."if_not_exists (path, operand) – If the item does not contain an attribute at the specified path, then if_not_exists evaluates to operand; otherwise, it evaluates to path. You can use this function to avoid overwriting an attribute already present in the item."
- Parameters:
path
- document path to an attributedefaultValue
- default value if the attribute doesn't exist- Returns:
- an
IfNotExists
object for string (S) attribute.
-
if_not_exists
public static IfNotExistsFunction<SS> if_not_exists(String path, String... defaultValue)
Returns anIfNotExists
object which represents an if_not_exists(path, operand) function call; used for building expression."if_not_exists (path, operand) – If the item does not contain an attribute at the specified path, then if_not_exists evaluates to operand; otherwise, it evaluates to path. You can use this function to avoid overwriting an attribute already present in the item."
- Parameters:
path
- document path to an attributedefaultValue
- default value if the attribute doesn't exist- Returns:
- an
IfNotExists
object for string set (SS) attribute.
-
list_append
public static <T> ListAppendFunction list_append(String path, T value)
Returns aListAppend
object which represents a list_append(operand, operand) function call; used for building expression."list_append(operand, operand) – This function evaluates to a list with a new element added to it. You can append the new element to the start or the end of the list by reversing the order of the operands."
- Parameters:
path
- document path to a list attributevalue
- single value to be appended to the list attribute
-
list_append
public static <T> ListAppendFunction list_append(String path, List<? extends T> value)
Returns aListAppend
object which represents a list_append(operand, operand) function call; used for building expression."list_append(operand, operand) – This function evaluates to a list with a new element added to it. You can append the new element to the start or the end of the list by reversing the order of the operands."
- Parameters:
path
- document path to a list attributevalue
- list of values to be appended to the list attribute
-
list_append
public static <T> ListAppendFunction list_append(List<? extends T> value, String path)
Returns aListAppend
object which represents a list_append(operand, operand) function call; used for building expression."list_append(operand, operand) – This function evaluates to a list with a new element added to it. You can append the new element to the start or the end of the list by reversing the order of the operands."
- Parameters:
value
- list of values to be appended topath
- document path to a list attribute
-
attribute_exists
public static <T> FunctionCondition attribute_exists(PathOperand pathOperand)
Returns a function condition (that evaluates to true if the attribute of the specified path operand exists) for building condition expression.
-
attribute_exists
public static <T> FunctionCondition attribute_exists(String path)
Returns a function condition (that evaluates to true if the attribute at the specified path exists) for building condition expression.
-
attribute_not_exists
public static FunctionCondition attribute_not_exists(PathOperand pathOperand)
Returns a function condition (that evaluates to true if the attribute of the specified path operand does not exist) for building condition expression.
-
attribute_not_exists
public static FunctionCondition attribute_not_exists(String path)
Returns a function condition (that evaluates to true if the attribute at the specified path does not exist) for building condition expression.
-
not
public static <T> NegationCondition not(Condition cond)
Returns a negation of the specified condition; used for building condition expression.
-
remove
public static RemoveAction remove(String path)
Returns aRemoveAction
for removing the attribute with the specified path from an item; used for building update expression.- Parameters:
path
- the document path to the attribute, where nested path elements are assumed to be delimited by either "." or array indexing such as "[1]".
-
attribute
public static PathOperand attribute(String path)
Returns a path operand that refers to an attribute of some unspecified data type; used for building expressions.- Parameters:
path
- the document path to the attribute, where nested path elements are assumed to be delimited by either "." or array indexing such as "[1]".
-
BOOL
public static BOOL BOOL(String path)
Creates a path operand that refers to a boolean attribute for the purpose of building expressions.- Parameters:
path
- the document path to the attribute, where nested path elements are assumed to be delimited by either "." or array indexing such as "[1]".
-
NULL
public static NULL NULL(String path)
Creates a path operand that refers to a NULL attribute for the purpose of building expressions.- Parameters:
path
- the document path to the attribute, where nested path elements are assumed to be delimited by either "." or array indexing such as "[1]".
-
B
public static B B(String path)
Creates a path operand that refers to a binary attribute for the purpose of building expressions.- Parameters:
path
- the document path to the attribute, where nested path elements are assumed to be delimited by either "." or array indexing such as "[1]".
-
N
public static N N(String path)
Creates a path operand that refers to a number attribute for the purpose of building expressions.- Parameters:
path
- the document path to the attribute, where nested path elements are assumed to be delimited by either "." or array indexing such as "[1]".
-
S
public static S S(String path)
Creates a path operand that refers to a string attribute for the purpose of building expressions.- Parameters:
path
- the document path to the attribute, where nested path elements are assumed to be delimited by either "." or array indexing such as "[1]".
-
BS
public static BS BS(String path)
Creates a path operand that refers to a binary-set attribute for the purpose of building expressions.- Parameters:
path
- the document path to the attribute, where nested path elements are assumed to be delimited by either "." or array indexing such as "[1]".
-
NS
public static NS NS(String path)
Creates a path operand that refers to a number-set attribute for the purpose of building expressions.- Parameters:
path
- the document path to the attribute, where nested path elements are assumed to be delimited by either "." or array indexing such as "[1]".
-
SS
public static SS SS(String path)
Creates a path operand that refers to a string-set attribute for the purpose of building expressions.- Parameters:
path
- the document path to the attribute, where nested path elements are assumed to be delimited by either "." or array indexing such as "[1]".
-
L
public static L L(String path)
Creates a path operand that refers to a list attribute for the purpose of building expressions.- Parameters:
path
- the document path to the attribute, where nested path elements are assumed to be delimited by either "." or array indexing such as "[1]".
-
M
public static M M(String path)
Creates a path operand that refers to a map attribute for the purpose of building expressions.- Parameters:
path
- the document path to the attribute, where nested path elements are assumed to be delimited by either "." or array indexing such as "[1]".
-
parenthesize
public static <T> ParenthesizedCondition parenthesize(Condition condition)
Returns an explicitly parenthesized condition, ie '(' condition ')' used in building condition expressions.
-
_
public static <T> ParenthesizedCondition _(Condition condition)
A short hand for callingparenthesize(Condition)
to explicitly parenthesize a given condition for building condition expressions.
-
-