DocumentMutation.append()

Appends a string value to a string or an array item to an array.

Operations Performed

Checks for the existence of the field that contains the string or array to be appended.
  • If the field exists, checks the data type.
  • If the data type matches the data type of the value to append, the value is appended.
  • If the field does not exist or the data types do not match, the operation fails.

Example of Appending to a String

Original document
{ "_id" : "000001"; "comment" : "Works great!" }
Example code for the append
  public DocumentMutation buildDocumentMutation() {
    return MapRDB.newDocumentMutation()
      .append("comment", " \nUpdate: Still works great!");
  }

  public void update(String tablePath, DocumentMutation mutation, String _id) {
    try(Table table = MapRDB.getTable(tablePath)) {
      table.update(_id, mutation);
    }
  }
Parameter Description
_id The value of the document's _id field.
tablePath The path of the table in the MapR file system. See Table Paths.
Revised document
{ "_id" : "000001"; "comment" : "Works great! \nUpdate: Still works great!" }

Example of Appending to an Array

Original document
{ "_id" : "000001"; "Score" : [10,20] }
Example code for the append
  public DocumentMutation buildDocumentMutation() {
    return MapRDB.newDocumentMutation()
      .append("Score", 30);
  }

  public void update(String tablePath, DocumentMutation mutation, String _id) {
    try(Table table = MapRDB.getTable(tablePath)) {
      table.update(_id, mutation);
    }
  }
Revised document
{ "_id" : "000001"; "Score" : [10,20,30] }

Permissions Required

Link to Javadoc

DocumentMutation

IMPORTANT: If a DocumentMutation object modifies a field two or more times, only the final operation on that field is applied.

Example One

table.update() in the last line fails with error code 22:

DBDocument doc = MapRDB.newDocument()
        .set("int", 100)
        .set("date", new Date(1000))
        .set("string", "a string");

table.insertOrReplace("doc1", doc);

// Set different fields
DocumentMutation mutation = MapRDB.newDocumentMutation();
mutation.setOrReplace("string", 1000);
mutation.set("string", 2000);

table.update("doc1", mutation);

Example Two

This code results in the document {"string":"a string add3"}, rather than the document {"string":"a string add1 add2 add3"}.

DBDocument doc = MapRDB.newDocument()
        .set("string", "a string");

table.insertOrReplace("doc1", record);

DocumentMutation mutation = MapRDB.newDocumentMutation();
mutation.append("string", " add1");
mutation.append("string", " add2");
mutation.append("string", " add3");

table.update("doc1", mutation);