This page documents an earlier version of the API client. For the latest version, see Add or update attributes of multiple records.
addObject
Use this method to add or update attributes of one or more records,
without replacing the whole record.
-
If you provide an
objectID
that exists in your index, this method adds or updates the attributes of that record, without affecting the other attributes. To replace whole records, use thesaveObjects
method instead. -
If you provide an
objectID
that doesn’t exist in your index, this method creates a new record unless thecreateIfNotExists
parameter isfalse
. - If you call this method on an index that doesn’t exist yet, this method creates a new index.
-
You can’t partially update nested attributes.
If you specify a nested attribute, this method replaces the first-level ancestor.
To update nested attributes, use the
saveObjects
method. To retrieve the record’s data, use thegetObjects
method.
When updating large numbers of records, be aware of the rate limitations on these processes and the impact on your analytics data.
Built-in operations
To update an attribute without pushing the entire record, you can use these built-in operations. These operations can be helpful if you don’t have access to your initial data.Increment
: increment a numeric attributeDecrement
: decrement a numeric attributeAdd
: append a number or string element to an array attributeRemove
: remove all matching number or string elements from an array attribute made of numbers or stringsAddUnique
: add a number or string element to an array attribute made of numbers or strings only if it’s not already presentIncrementFrom
: increment a numeric integer attribute only if the provided value matches the current value, and otherwise ignore the whole object update. For example, if you pass anIncrementFrom
value of 2 for theversion
attribute, but the current value of the attribute is 1, the engine ignores the update. If the object doesn’t exist, the engine only creates it if you pass anIncrementFrom
value of 0.IncrementSet
: increment a numeric integer attribute only if the provided value is greater than the current value, and otherwise ignore the whole object update. For example, if you pass anIncrementSet
value of 2 for theversion
attribute, and the current value of the attribute is 1, the engine updates the object. If the object doesn’t exist yet, the engine only creates it if you pass anIncrementSet
value that’s greater than 0.
For
Remove
and AddUnique
: the operation will be silently ignored if the array attribute has any nested object or array._operation
: the operation to apply on the attributevalue
: the right-hand side argument to the operation, for example, increment or decrement step, value to add or remove
Only the
IncrementFrom
and IncrementSet
operations guarantee idempotent record updates. The other built-in operations aren’t idempotent and can cause unexpected side-effects, unless you use them in combination with the idempotent operations.
For example, if you’re using the Increment
or Decrement
operations in a concurrent or multi-threaded environment, you may trigger it more than once and end up with wrong data in your records.partialUpdateObject
method.
Examples
Partially update multiple records
Partially update multiple records and send extra HTTP headers
Update one attribute of an existing record
This example updates only thecity
attribute of a single record
Add a new attribute to an existing record
This example adds astate
attribute to a single record.
Increment a numeric attribute
This example updates thecount
attribute and increments its value.
Add a new value to an existing array attribute
This example updates the_tags
attribute and adds an item to the list.
Update only if the value matches a numeric attribute
This example updates theversion
attribute using the IncrementFrom
built-in operation. This ensures that this attribute is only incremented if the provided value matches.
Update only if the value is greater than a numeric attribute
This example updates thelastmodified
attribute using the IncrementSet
built-in operation to ensure that only the highest increment value is set.
Parameters
If
true
, updating a record with a non-existing objectID
creates a new record with the specified attributes.
If false
(the objectID
doesn’t exist), the update will be ignored. This means that no error will be returned, and the record won’t be updated.In the Java, JavaScript, Ruby, Python, PHP, and .NET API clients, this parameter defaults to
false
.A mapping of request options to send along with the query.
Response
List of object IDs of the records that should be updated.
Response as JSON
This section shows the JSON response returned by the API. Each API client wraps this response in language-specific objects, so the structure may vary. To view the response, use thegetLogs
method.
Don’t rely on the order of properties—JSON objects don’t preserve key order.
JSON