SDK
SDK Javascript v7.x
2

mUpsert #

Available since Kuzzle 2.11.0
Available since 7.7.1

Applies partial changes to multiple documents. If a document doesn't already exist, a new document is created.

You can set the retryOnConflict optional argument (with a retry count), to tell Kuzzle to retry the failing updates the specified amount of times before rejecting the request with an error.


mUpsert(index, collection, documents, [options]);
ArgumentTypeDescription
index
string
Index name
collection
string
Collection name
documents
object[]
Array of documents to update
options
object
Query options

documents #

documents is an array of object which each object representing a document. Fields _id and changes is always mandatory while default is optional. Example:

[
  {
    "_id": "<documentId>",
    "changes": {
      // document partial changes
    },
    "default": {
      // optional: document fields to add to the "update" part if the document
      // is created
    }
  },
  {
    "_id": "<anotherDocumentId>",
    "changes": {
      // document partial changes
    },
  }
]

Options #

Additional query options

OptionsType
(default)
Description
queuable
boolean

(true)
If true, queues the request during downtime, until connected to Kuzzle again
refresh
string

("")
If set to wait_for, waits for the change to be reflected for search (up to 1s)
retryOnConflict
int

(0)
The number of times the database layer should retry in case of version conflict
silent
boolean

(false)
If true, then Kuzzle will not generate notifications
Available since 7.5.3
timeout
number

(-1)
Time (in ms) during which a request will still be waited to be resolved. Set it -1 if you want to wait indefinitely
triggerEvents
boolean

(false)
If set to true, will trigger events even if using Embeded SDK. You should always ensure that your events/pipes does not create an infinite loop.
Available since Kuzzle 2.31.0

Resolves #

Returns an object containing 2 arrays: successes and errors

Each updated document is an object of the successes array with the following properties:

NameTypeDescription
_id
string
Document ID
status
number
HTTP error status
created
boolean
true if the document has been created
_version
number
Version of the document in the persistent data storage
_source
object
Document content

Each errored document is an object of the errors array with the following properties:

NameTypeDescription
document
object
Document that cause the error
status
number
HTTP error status
reason
string
Human readable reason

Usage #

const doc1 = { capacity: 4 };
const doc2 = { capacity: 7 };
try {
  await kuzzle.document.create('nyc-open-data', 'yellow-taxi', doc1, 'some-id');
  const documents = [
    {
      _id: 'some-id',
      changes: { category: 'sedan' }
    },
    {
      _id: 'some-other-id',
      changes: { category: 'limousine' },
      default: { capacity: 8 }
    }
  ];
  const response = await kuzzle.document.mUpsert(
    'nyc-open-data',
    'yellow-taxi',
    documents
  );
  console.log(response);
  /*
    { successes:
      [ { _id: 'some-id',
          _source: { _kuzzle_info: [Object], category: 'sedan' },
          _version: 2,
          created: false,
          status: 200 },
        { _id: 'some-other-id',
          _source: { _kuzzle_info: [Object], category: 'limousine', capacity: 8 },
          _version: 1,
          created: true,
          status: 200 } ],
    errors: [] }
  */
  console.log('Success');
} catch (error) {
  console.error(error.message);
}