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]);
Argument | Type | Description |
---|---|---|
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
Options | Type (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:
Name | Type | Description |
---|---|---|
_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:
Name | Type | Description |
---|---|---|
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);
}
Edit this page on Github(opens new window)