Database
getDocument
1. API Description
Feature: query a single document
2. Request URL
GET https://tcb-api.tencentcloudapi.com/api/v2/envs/{envId}/databases/{collectionName}/documents/{docId}?limit={limit}&skip={skip}&fields={fields}&sort={sort}&transactionId={transactionId}
URL query parameters
| Field | Type | Required | Description |
|---|---|---|---|
| limit | String | No | Limit the number of documents returned |
| skip | String | No | Number of documents to skip |
| fields | String | No | e.g. {key1: 1, key2: 0} — keep key1, drop key2 |
| sort | String | No | e.g. {key1: 1, key2: -1} — sort ascending by key1, then descending by key2 |
| transactionId | String | No | If present, indicates a document operation inside a transaction |
3. Request body
None
4. Response body
| Field | Type | Required | Description |
|---|---|---|---|
| statusCode | Number | Yes | Status code, 200 |
| body | Object | Yes | Response body, structure shown below |
body
| Field | Type | Required | Description |
|---|---|---|---|
| requestId | String | No | Request ID |
| data | Object | No | Result |
| code | String | No | Error code |
| message | String | No | Error message |
data
| Field | Type | Required | Description |
|---|---|---|---|
| offset | number | Yes | Offset |
| limit | number | Yes | Limit |
| list | Array<String> | Yes | Document array; each element is an EJSON-serialized string |
5. Example
// Node example
const request = require("request"); // request library, install via npm
const envId = "testEnv"; // environment ID
const collectionName = "testCollection"; // collection name
const docId = "testDocId"; // document ID
const { EJSON } = require("bson"); // bson library, install via npm
request(
{
url: `https://tcb-api.tencentcloudapi.com/api/v2/envs/${envId}/databases/${collectionName}/documents/${docId}`,
method: "GET",
headers: {
"X-CloudBase-Authorization": "your authorization",
"X-CloudBase-SessionToken": "your token",
"X-CloudBase-TimeStamp": "the timestamp",
},
json: true,
},
(err, response, body) => {
console.log(err);
console.log(response.statusCode);
console.log(response.body);
const data = response.body.data.list.map((item) => EJSON.parse(item)); // EJSON deserialization
consol.log(data);
},
);
updateDocument
1. API Description
Feature: update a single document
2. Request URL
PATCH https://tcb-api.tencentcloudapi.com/api/v2/envs/{envId}/databases/{collectionName}/documents/{docId}?transactionId={transactionId}
URL query parameters
| Field | Type | Required | Description |
|---|---|---|---|
| transactionId | String | No | If present, indicates a document operation inside a transaction |
3. Request body
| Field | Type | Required | Description |
|---|---|---|---|
| data | String | Yes | EJSON-serialized replacement document string |
4. Response body
| Field | Type | Required | Description |
|---|---|---|---|
| statusCode | Number | Yes | Status code, 200 |
| body | Object | Yes | Response body, structure shown below |
body
| Field | Type | Required | Description |
|---|---|---|---|
| requestId | String | No | Request ID |
| data | Object | No | Result |
| code | String | No | Error code |
| message | String | No | Error message |
data
| Field | Type | Required | Description |
|---|---|---|---|
| updated | Number | Yes | Number of documents updated successfully |
| matched | Number | Yes | Number of documents matched |
| upsert_id | String | Yes | Present on upsert; otherwise null |
5. Example
// Node example
const request = require("request"); // request library, install via npm
const envId = "testEnv"; // environment ID
const collectionName = "testCollection"; // collection name
const docId = "testDocId"; // document ID
const { EJSON } = require("bson"); // bson library, install via npm
request(
{
url: `https://tcb-api.tencentcloudapi.com/api/v2/envs/${envId}/databases/${collectionName}/documents/${docId}`,
method: "PATCH",
headers: {
"X-CloudBase-Authorization": "your authorization",
"X-CloudBase-SessionToken": "your token",
"X-CloudBase-TimeStamp": "the timestamp",
},
body: {
data: EJSON.stringify(
{
name: "new Name", // update the name field
},
{ relaxed: false },
),
},
json: true,
},
(err, response, body) => {
console.log(err);
console.log(response.statusCode);
console.log(response.body.data.updated);
},
);
setDocument
1. API Description
Feature: replace a single document. If a document with the given docId already exists, replace it; otherwise insert a new one.
2. Request URL
PUT https://tcb-api.tencentcloudapi.com/api/v2/envs/{envId}/databases/{collectionName}/documents/{docId}?transactionId={transactionId}
URL query parameters
| Field | Type | Required | Description |
|---|---|---|---|
| transactionId | String | No | If present, indicates a document operation inside a transaction |
3. Request body
| Field | Type | Required | Description |
|---|---|---|---|
| data | String | Yes | EJSON-serialized replacement document string |
4. Response body
| Field | Type | Required | Description |
|---|---|---|---|
| statusCode | Number | Yes | Status code, 200 |
| body | Object | Yes | Response body, structure shown below |
body
| Field | Type | Required | Description |
|---|---|---|---|
| requestId | String | No | Request ID |
| data | Object | No | Result |
| code | String | No | Error code |
| message | String | No | Error message |
data
| Field | Type | Required | Description |
|---|---|---|---|
| updated | Number | Yes | Number of documents updated successfully |
| matched | Number | Yes | Number of documents matched |
| upsert_id | String | Yes | Present when a new doc is inserted via upsert; otherwise null |
5. Example
// Node example
const request = require("request"); // request library, install via npm
const envId = "testEnv"; // environment ID
const collectionName = "testCollection"; // collection name
const docId = "testDocId"; // document ID
const unExistDocId = "testUnExistDocId"; // non-existent document ID
const { EJSON } = require("bson"); // bson library, install via npm
request(
{
url: `https://tcb-api.tencentcloudapi.com/api/v2/envs/${envId}/databases/${collectionName}/documents/${docId}`, // replace update
// url: `https://tcb-api.tencentcloudapi.com/api/v2/envs/${envId}/databases/${collectionName}/documents/${unExistDocId}`, // insert the current document
method: "PUT",
headers: {
"X-CloudBase-Authorization": "your authorization",
"X-CloudBase-SessionToken": "your token",
"X-CloudBase-TimeStamp": "the timestamp",
},
body: {
data: EJSON.stringify(
{
name: "new Name", // update the name field
},
{ relaxed: false },
),
},
json: true,
},
(err, response, body) => {
console.log(err);
console.log(response.statusCode);
console.log(response.body.data.updated); // present on replacement update
console.log(response.body.data.upsert_id); // present when the document is inserted because it didn't exist
},
);
insertDocument
1. API Description
Feature: insert a single document
2. Request URL
POST https://tcb-api.tencentcloudapi.com/api/v2/envs/{envId}/databases/{collectionName}/documents/{docId}?transactionId={transactionId}
URL query parameters
| Field | Type | Required | Description |
|---|---|---|---|
| transactionId | String | No | If present, indicates a document operation inside a transaction |
3. Request body
| Field | Type | Required | Description |
|---|---|---|---|
| data | String | Yes | EJSON-serialized document string |
4. Response body
| Field | Type | Required | Description |
|---|---|---|---|
| statusCode | Number | Yes | Status code, 200 |
| body | Object | Yes | Response body, structure shown below |
body
| Field | Type | Required | Description |
|---|---|---|---|
| requestId | String | No | Request ID |
| data | Object | No | Result |
| code | String | No | Error code |
| message | String | No | Error message |
data
| Field | Type | Required | Description |
|---|---|---|---|
| insertedIds | Array<String> | Yes | Array of docIds that were inserted successfully |
5. Example
// Node example
const request = require("request"); // request library, install via npm
const envId = "testEnv"; // environment ID
const collectionName = "testCollection"; // collection name
const docId = "testDocId"; // document ID
const { EJSON } = require("bson"); // bson library, install via npm
request(
{
url: `https://tcb-api.tencentcloudapi.com/api/v2/envs/${envId}/databases/${collectionName}/documents/${docId}`,
method: "POST",
headers: {
"X-CloudBase-Authorization": "your authorization",
"X-CloudBase-SessionToken": "your token",
"X-CloudBase-TimeStamp": "the timestamp",
},
body: {
data: EJSON.stringify(
{
name: "luke",
sex: "male",
},
{ relaxed: false },
),
},
json: true,
},
(err, response, body) => {
console.log(err);
console.log(response.statusCode);
console.log(response.body.data.insertedIds);
},
);
deleteDocument
1. API Description
Feature: delete a single document
2. Request URL
DELETE https://tcb-api.tencentcloudapi.com/api/v2/envs/{envId}/databases/{collectionName}/documents/{docId}?transactionId={transactionId}
URL query parameters
| Field | Type | Required | Description |
|---|---|---|---|
| transactionId | String | No | If present, indicates a document operation inside a transaction |
3. Request body
None
4. Response body
| Field | Type | Required | Description |
|---|---|---|---|
| statusCode | Number | Yes | Status code, 200 |
| body | Object | Yes | Response body, structure shown below |
body
| Field | Type | Required | Description |
|---|---|---|---|
| requestId | String | No | Request ID |
| data | Object | No | Result |
| code | String | No | Error code |
| message | String | No | Error message |
data
| Field | Type | Required | Description |
|---|---|---|---|
| deleted | Number | Yes | Number of documents deleted successfully |
5. Example
// Node example
const request = require("request"); // request library, install via npm
const envId = "testEnv"; // environment ID
const collectionName = "testCollection"; // collection name
const docId = "testDocId"; // document ID
const { EJSON } = require("bson"); // bson library, install via npm
request(
{
url: `https://tcb-api.tencentcloudapi.com/api/v2/envs/${envId}/databases/${collectionName}/documents/${docId}`,
method: "DELETE",
headers: {
"X-CloudBase-Authorization": "your authorization",
"X-CloudBase-SessionToken": "your token",
"X-CloudBase-TimeStamp": "the timestamp",
},
json: true,
},
(err, response, body) => {
console.log(err);
console.log(response.statusCode);
console.log(response.body.data.deleted);
},
);
insertDocuments
1. API Description
Feature: batch insert documents
2. Request URL
POST https://tcb-api.tencentcloudapi.com/api/v2/envs/{envId}/databases/{collectionName}/documents?transactionId={transactionId}
URL query parameters
| Field | Type | Required | Description |
|---|---|---|---|
| transactionId | String | No | If present, indicates a document operation inside a transaction |
3. Request body
| Field | Type | Required | Description |
|---|---|---|---|
| data | Array<String> | Yes | Array of strings; each element is an EJSON-serialized document string |
4. Response body
| Field | Type | Required | Description |
|---|---|---|---|
| statusCode | Number | Yes | Status code, 200 |
| body | Object | Yes | Response body, structure shown below |
body
| Field | Type | Required | Description |
|---|---|---|---|
| requestId | String | No | Request ID |
| data | Object | No | Result |
| code | String | No | Error code |
| message | String | No | Error message |
data
| Field | Type | Required | Description |
|---|---|---|---|
| insertedIds | Array<String> | Yes | Array of docIds that were inserted successfully |
5. Example
// Node example
const request = require("request"); // request library, install via npm
const envId = "testEnv"; // environment ID
const collectionName = "testCollection"; // collection name
const { EJSON } = require("bson"); // bson library, install via npm
const insertDatas = [
{
name: "luke",
},
{
name: "jimmy",
},
];
request(
{
url: `https://tcb-api.tencentcloudapi.com/api/v2/envs/${envId}/databases/${collectionName}/documents`,
method: "POST",
headers: {
"X-CloudBase-Authorization": "your authorization",
"X-CloudBase-SessionToken": "your token",
"X-CloudBase-TimeStamp": "the timestamp",
},
body: {
data: insertDatas.map((item) =>
EJSON.stringify(item, { relaxed: false }),
),
},
json: true,
},
(err, response, body) => {
console.log(err);
console.log(response.statusCode);
console.log(response.body.data.insertedIds);
},
);
find
1. API Description
Feature: batch query documents
2. Request URL
POST https://tcb-api.tencentcloudapi.com/api/v2/envs/{envId}/databases/{collectionName}/documents:find?limit={limit}&skip={skip}&fields={fields}&sort={sort}&transactionId={transactionId}
URL query parameters
| Field | Type | Required | Description |
|---|---|---|---|
| limit | String | Yes | Limit the number of documents returned |
| skip | String | Yes | Number of documents to skip |
| fields | String | Yes | e.g. {key1: 1, key2: 0} — keep key1, drop key2 |
| sort | String | Yes | e.g. {key1: 1, key2: -1} — sort ascending by key1, then descending by key2 |
| transactionId | String | Yes | If present, indicates a document operation inside a transaction |
3. Request body
| Field | Type | Required | Description |
|---|---|---|---|
| query | String | Yes | EJSON-serialized query string |
4. Response body
| Field | Type | Required | Description |
|---|---|---|---|
| statusCode | Number | Yes | Status code, 200 |
| body | Object | Yes | Response body, structure shown below |
body
| Field | Type | Required | Description |
|---|---|---|---|
| requestId | String | No | Request ID |
| data | Object | No | Result |
| code | String | No | Error code |
| message | String | No | Error message |
data
| Field | Type | Required | Description |
|---|---|---|---|
| offset | number | Yes | Offset |
| limit | number | Yes | Limit |
| list | Array<String> | Yes | Document array; each element is an EJSON-serialized string |
5. Example
// Node example
const request = require("request"); // request library, install via npm
const envId = "testEnv"; // environment ID
const collectionName = "testCollection"; // collection name
const { EJSON } = require("bson"); // bson library, install via npm
request(
{
url: `https://tcb-api.tencentcloudapi.com/api/v2/envs/${envId}/databases/${collectionName}/documents:find`,
method: "POST",
headers: {
"X-CloudBase-Authorization": "your authorization",
"X-CloudBase-SessionToken": "your token",
"X-CloudBase-TimeStamp": "the timestamp",
},
body: {
query: EJSON.stringify(
{
sex: "male",
},
{ relaxed: false },
),
},
json: true,
},
(err, response, body) => {
console.log(err);
console.log(response.statusCode);
const data = response.body.data.list.map((item) => EJSON.parse(item)); // EJSON deserialization
console.log(data);
},
);
count
1. API Description
Feature: count the total number of matching documents
2. Request URL
POST https://tcb-api.tencentcloudapi.com/api/v2/envs/{envId}/databases/{collectionName}/documents:count?transactionId={transactionId}
URL query parameters
| Field | Type | Required | Description |
|---|---|---|---|
| transactionId | String | Yes | If present, indicates a document operation inside a transaction |
3. Request body
| Field | Type | Required | Description |
|---|---|---|---|
| query | String | Yes | EJSON-serialized query string |
4. Response body
| Field | Type | Required | Description |
|---|---|---|---|
| statusCode | Number | Yes | Status code, 200 |
| body | Object | Yes | Response body, structure shown below |
body
| Field | Type | Required | Description |
|---|---|---|---|
| requestId | String | No | Request ID |
| data | Object | No | Result |
| code | String | No | Error code |
| message | String | No | Error message |
data
| Field | Type | Required | Description |
|---|---|---|---|
| total | number | Yes | Total count |
5. Example
// Node example
const request = require("request"); // request library, install via npm
const envId = "testEnv"; // environment ID
const collectionName = "testCollection"; // collection name
const { EJSON } = require("bson"); // bson library, install via npm
request(
{
url: `https://tcb-api.tencentcloudapi.com/api/v2/envs/${envId}/databases/${collectionName}/documents:count`,
method: "POST",
headers: {
"X-CloudBase-Authorization": "your authorization",
"X-CloudBase-SessionToken": "your token",
"X-CloudBase-TimeStamp": "the timestamp",
},
body: {
query: EJSON.stringify(
{
sex: "male",
},
{ relaxed: false },
),
},
json: true,
},
(err, response, body) => {
console.log(err);
console.log(response.statusCode);
console.log(response.body.data.total);
},
);
updateOne
1. API Description
Feature: query in batch and update a single document
2. Request URL
POST https://tcb-api.tencentcloudapi.com/api/v2/envs/{envId}/databases/{collectionName}/documents:updateOne?transactionId={transactionId}
URL query parameters
| Field | Type | Required | Description |
|---|---|---|---|
| transactionId | String | No | If present, indicates a document operation inside a transaction |
3. Request body
| Field | Type | Required | Description |
|---|---|---|---|
| query | String | Yes | EJSON-serialized query string |
| data | String | Yes | EJSON-serialized update string |
4. Response body
| Field | Type | Required | Description |
|---|---|---|---|
| statusCode | Number | Yes | Status code, 200 |
| body | Object | Yes | Response body, structure shown below |
body
| Field | Type | Required | Description |
|---|---|---|---|
| requestId | String | No | Request ID |
| data | Object | No | Result |
| code | String | No | Error code |
| message | String | No | Error message |
data
| Field | Type | Required | Description |
|---|---|---|---|
| updated | Number | Yes | Number of documents updated successfully |
| matched | Number | Yes | Number of documents matched |
| upsert_id | String | Yes | Present when a new doc is inserted via upsert; otherwise null |
5. Example
// Node example
const request = require("request"); // request library, install via npm
const envId = "testEnv"; // environment ID
const collectionName = "testCollection"; // collection name
const { EJSON } = require("bson"); // bson library, install via npm
request(
{
url: `https://tcb-api.tencentcloudapi.com/api/v2/envs/${envId}/databases/${collectionName}/documents:updateOne`,
method: "POST",
headers: {
"X-CloudBase-Authorization": "your authorization",
"X-CloudBase-SessionToken": "your token",
"X-CloudBase-TimeStamp": "the timestamp",
},
body: {
query: EJSON.stringify(
{
sex: "male",
},
{ relaxed: false },
),
data: EJSON.stringify(
{
name: "newName",
},
{ relaxed: false },
),
},
json: true,
},
(err, response, body) => {
console.log(err);
console.log(response.statusCode);
console.log(response.body.data.updated);
},
);
updateMany
1. API Description
Feature: query in batch and update multiple documents
2. Request URL
POST https://tcb-api.tencentcloudapi.com/api/v2/envs/{envId}/databases/{collectionName}/documents:updateMany?transactionId={transactionId}
URL query parameters
| Field | Type | Required | Description |
|---|---|---|---|
| transactionId | String | No | If present, indicates a document operation inside a transaction |
3. Request body
| Field | Type | Required | Description |
|---|---|---|---|
| query | String | Yes | EJSON-serialized query string |
| data | String | Yes | EJSON-serialized update string |
4. Response body
| Field | Type | Required | Description |
|---|---|---|---|
| statusCode | Number | Yes | Status code, 200 |
| body | Object | Yes | Response body, structure shown below |
body
| Field | Type | Required | Description |
|---|---|---|---|
| requestId | String | No | Request ID |
| data | Object | No | Result |
| code | String | No | Error code |
| message | String | No | Error message |
data
| Field | Type | Required | Description |
|---|---|---|---|
| updated | Number | Yes | Number of documents updated successfully |
| matched | Number | Yes | Number of documents matched |
| upsert_id | String | Yes | Present when a new doc is inserted via upsert; otherwise null |
5. Example
// Node example
const request = require("request"); // request library, install via npm
const envId = "testEnv"; // environment ID
const collectionName = "testCollection"; // collection name
const { EJSON } = require("bson"); // bson library, install via npm
request(
{
url: `https://tcb-api.tencentcloudapi.com/api/v2/envs/${envId}/databases/${collectionName}/documents:updateMany`,
method: "POST",
headers: {
"X-CloudBase-Authorization": "your authorization",
"X-CloudBase-SessionToken": "your token",
"X-CloudBase-TimeStamp": "the timestamp",
},
body: {
query: EJSON.stringify(
{
sex: "male",
},
{ relaxed: false },
),
data: EJSON.stringify(
{
name: "newName",
},
{ relaxed: false },
),
},
json: true,
},
(err, response, body) => {
console.log(err);
console.log(response.statusCode);
console.log(response.body.data.updated);
},
);
deleteOne
1. API Description
Feature: query in batch and delete a single document
2. Request URL
POST https://tcb-api.tencentcloudapi.com/api/v2/envs/{envId}/databases/{collectionName}/documents:deleteOne?transactionId={transactionId}
URL query parameters
| Field | Type | Required | Description |
|---|---|---|---|
| transactionId | String | No | If present, indicates a document operation inside a transaction |
3. Request body
| Field | Type | Required | Description |
|---|---|---|---|
| query | String | Yes | EJSON-serialized query string |
4. Response body
| Field | Type | Required | Description |
|---|---|---|---|
| statusCode | Number | Yes | Status code, 200 |
| body | Object | Yes | Response body, structure shown below |
body
| Field | Type | Required | Description |
|---|---|---|---|
| requestId | String | No | Request ID |
| data | Object | No | Result |
| code | String | No | Error code |
| message | String | No | Error message |
data
| Field | Type | Required | Description |
|---|---|---|---|
| deleted | Number | Yes | Number of documents deleted successfully |
5. Example
// Node example
const request = require("request"); // request library, install via npm
const envId = "testEnv"; // environment ID
const collectionName = "testCollection"; // collection name
const { EJSON } = require("bson"); // bson library, install via npm
request(
{
url: `https://tcb-api.tencentcloudapi.com/api/v2/envs/${envId}/databases/${collectionName}/documents:deleteOne`,
method: "POST",
headers: {
"X-CloudBase-Authorization": "your authorization",
"X-CloudBase-SessionToken": "your token",
"X-CloudBase-TimeStamp": "the timestamp",
},
body: {
query: EJSON.stringify(
{
sex: "male",
},
{ relaxed: false },
),
},
json: true,
},
(err, response, body) => {
console.log(err);
console.log(response.statusCode);
console.log(response.body.data.deleted);
},
);
deleteMany
1. API Description
Feature: query in batch and delete multiple documents
2. Request URL
POST https://tcb-api.tencentcloudapi.com/api/v2/envs/{envId}/databases/{collectionName}/documents:deleteMany?transactionId={transactionId}
URL query parameters
| Field | Type | Required | Description |
|---|---|---|---|
| transactionId | String | No | If present, indicates a document operation inside a transaction |
3. Request body
| Field | Type | Required | Description |
|---|---|---|---|
| query | String | Yes | EJSON-serialized query string |
4. Response body
| Field | Type | Required | Description |
|---|---|---|---|
| statusCode | Number | Yes | Status code, 200 |
| body | Object | Yes | Response body, structure shown below |
body
| Field | Type | Required | Description |
|---|---|---|---|
| requestId | String | No | Request ID |
| data | Object | No | Result |
| code | String | No | Error code |
| message | String | No | Error message |
data
| Field | Type | Required | Description |
|---|---|---|---|
| deleted | Number | Yes | Number of documents deleted successfully |
5. Example
// Node example
const request = require("request"); // request library, install via npm
const envId = "testEnv"; // environment ID
const collectionName = "testCollection"; // collection name
const { EJSON } = require("bson"); // bson library, install via npm
request(
{
url: `https://tcb-api.tencentcloudapi.com/api/v2/envs/${envId}/databases/${collectionName}/documents:deleteMany`,
method: "POST",
headers: {
"X-CloudBase-Authorization": "your authorization",
"X-CloudBase-SessionToken": "your token",
"X-CloudBase-TimeStamp": "the timestamp",
},
body: {
query: EJSON.stringify(
{
sex: "male",
},
{ relaxed: false },
),
},
json: true,
},
(err, response, body) => {
console.log(err);
console.log(response.statusCode);
console.log(response.body.data.deleted);
},
);
Query Command
$eq
Matches values that equal the given value.
Syntax: { <field>: { $eq: <value> } }
// Node example
const request = require("request"); // request library, install via npm
const envId = "testEnv"; // environment ID
const collectionName = "testCollection"; // collection name
const { EJSON } = require("bson"); // bson library, install via npm
request(
{
url: `https://tcb-api.tencentcloudapi.com/api/v2/envs/${envId}/databases/${collectionName}/documents:find`,
method: "POST",
headers: {
"X-CloudBase-Authorization": "your authorization",
"X-CloudBase-SessionToken": "your token",
"X-CloudBase-TimeStamp": "the timestamp",
},
body: {
query: EJSON.stringify(
{
name: {
$eq: "luke", // find documents where the name field equals "luke"
},
},
{ relaxed: false },
),
},
json: true,
},
(err, response, body) => {
console.log(err);
console.log(response.statusCode);
const data = response.body.data.list.map((item) => EJSON.parse(item)); // EJSON deserialization
console.log(data);
},
);
$ne
Matches values that do not equal the given value.
Syntax: { <field>: { $ne: <value> } }
// Node example
const request = require("request"); // request library, install via npm
const envId = "testEnv"; // environment ID
const collectionName = "testCollection"; // collection name
const { EJSON } = require("bson"); // bson library, install via npm
request(
{
url: `https://tcb-api.tencentcloudapi.com/api/v2/envs/${envId}/databases/${collectionName}/documents:find`,
method: "POST",
headers: {
"X-CloudBase-Authorization": "your authorization",
"X-CloudBase-SessionToken": "your token",
"X-CloudBase-TimeStamp": "the timestamp",
},
body: {
query: EJSON.stringify(
{
name: {
$ne: "luke", // find documents where the name field is not "luke"
},
},
{ relaxed: false },
),
},
json: true,
},
(err, response, body) => {
console.log(err);
console.log(response.statusCode);
const data = response.body.data.list.map((item) => EJSON.parse(item)); // EJSON deserialization
console.log(data);
},
);
$gt
Matches values greater than the given value.
Syntax: {field: {$gt: value} }
// Node example
const request = require("request"); // request library, install via npm
const envId = "testEnv"; // environment ID
const collectionName = "testCollection"; // collection name
const { EJSON } = require("bson"); // bson library, install via npm
request(
{
url: `https://tcb-api.tencentcloudapi.com/api/v2/envs/${envId}/databases/${collectionName}/documents:find`,
method: "POST",
headers: {
"X-CloudBase-Authorization": "your authorization",
"X-CloudBase-SessionToken": "your token",
"X-CloudBase-TimeStamp": "the timestamp",
},
body: {
query: EJSON.stringify(
{
age: {
$gt: 18, // find documents where the age field is greater than 18
},
},
{ relaxed: false },
),
},
json: true,
},
(err, response, body) => {
console.log(err);
console.log(response.statusCode);
const data = response.body.data.list.map((item) => EJSON.parse(item)); // EJSON deserialization
console.log(data);
},
);
$gte
Matches values greater than or equal to the given value.
Syntax: {field: {$gte: value} }
// Node example
const request = require("request"); // request library, install via npm
const envId = "testEnv"; // environment ID
const collectionName = "testCollection"; // collection name
const { EJSON } = require("bson"); // bson library, install via npm
request(
{
url: `https://tcb-api.tencentcloudapi.com/api/v2/envs/${envId}/databases/${collectionName}/documents:find`,
method: "POST",
headers: {
"X-CloudBase-Authorization": "your authorization",
"X-CloudBase-SessionToken": "your token",
"X-CloudBase-TimeStamp": "the timestamp",
},
body: {
query: EJSON.stringify(
{
age: {
$gte: 18, // find documents where the age field is >= 18
},
},
{ relaxed: false },
),
},
json: true,
},
(err, response, body) => {
console.log(err);
console.log(response.statusCode);
const data = response.body.data.list.map((item) => EJSON.parse(item)); // EJSON deserialization
console.log(data);
},
);
$lt
Matches values less than the given value.
Syntax: {field: {$lt: value} }
// Node example
const request = require("request"); // request library, install via npm
const envId = "testEnv"; // environment ID
const collectionName = "testCollection"; // collection name
const { EJSON } = require("bson"); // bson library, install via npm
request(
{
url: `https://tcb-api.tencentcloudapi.com/api/v2/envs/${envId}/databases/${collectionName}/documents:find`,
method: "POST",
headers: {
"X-CloudBase-Authorization": "your authorization",
"X-CloudBase-SessionToken": "your token",
"X-CloudBase-TimeStamp": "the timestamp",
},
body: {
query: EJSON.stringify(
{
age: {
$lt: 18, // find documents where the age field is less than 18
},
},
{ relaxed: false },
),
},
json: true,
},
(err, response, body) => {
console.log(err);
console.log(response.statusCode);
const data = response.body.data.list.map((item) => EJSON.parse(item)); // EJSON deserialization
console.log(data);
},
);
$lte
Matches values less than or equal to the given value.
Syntax: {field: {$lte: value} }
// Node example
const request = require("request"); // request library, install via npm
const envId = "testEnv"; // environment ID
const collectionName = "testCollection"; // collection name
const { EJSON } = require("bson"); // bson library, install via npm
request(
{
url: `https://tcb-api.tencentcloudapi.com/api/v2/envs/${envId}/databases/${collectionName}/documents:find`,
method: "POST",
headers: {
"X-CloudBase-Authorization": "your authorization",
"X-CloudBase-SessionToken": "your token",
"X-CloudBase-TimeStamp": "the timestamp",
},
body: {
query: EJSON.stringify(
{
age: {
$lte: 18, // find documents where the age field is <= 18
},
},
{ relaxed: false },
),
},
json: true,
},
(err, response, body) => {
console.log(err);
console.log(response.statusCode);
const data = response.body.data.list.map((item) => EJSON.parse(item)); // EJSON deserialization
console.log(data);
},
);
$in
Matches any of the values in the given array.
Syntax: { field: { $in: [<value1>, <value2>, ... <valueN> ] } }
// Node example
const request = require("request"); // request library, install via npm
const envId = "testEnv"; // environment ID
const collectionName = "testCollection"; // collection name
const { EJSON } = require("bson"); // bson library, install via npm
request(
{
url: `https://tcb-api.tencentcloudapi.com/api/v2/envs/${envId}/databases/${collectionName}/documents:find`,
method: "POST",
headers: {
"X-CloudBase-Authorization": "your authorization",
"X-CloudBase-SessionToken": "your token",
"X-CloudBase-TimeStamp": "the timestamp",
},
body: {
query: EJSON.stringify(
{
category: {
$in: ["science", "computer"], // find documents where the category field is one of science or computer
},
},
{ relaxed: false },
),
},
json: true,
},
(err, response, body) => {
console.log(err);
console.log(response.statusCode);
const data = response.body.data.list.map((item) => EJSON.parse(item)); // EJSON deserialization
console.log(data);
},
);
$nin
Matches none of the values in the given array.
Syntax: { field: { $nin: [<value1>, <value2>, ... <valueN> ] } }
// Node example
const request = require("request"); // request library, install via npm
const envId = "testEnv"; // environment ID
const collectionName = "testCollection"; // collection name
const { EJSON } = require("bson"); // bson library, install via npm
request(
{
url: `https://tcb-api.tencentcloudapi.com/api/v2/envs/${envId}/databases/${collectionName}/documents:find`,
method: "POST",
headers: {
"X-CloudBase-Authorization": "your authorization",
"X-CloudBase-SessionToken": "your token",
"X-CloudBase-TimeStamp": "the timestamp",
},
body: {
query: EJSON.stringify(
{
category: {
$nin: ["science", "computer"], // find documents where the category field is not one of science or computer
},
},
{ relaxed: false },
),
},
json: true,
},
(err, response, body) => {
console.log(err);
console.log(response.statusCode);
const data = response.body.data.list.map((item) => EJSON.parse(item)); // EJSON deserialization
console.log(data);
},
);
$and
All of the given conditions must be satisfied.
Syntax: { $and: [ { <expression1> }, { <expression2> } , ... , { <expressionN> } ] }
// Node example
const request = require("request"); // request library, install via npm
const envId = "testEnv"; // environment ID
const collectionName = "testCollection"; // collection name
const { EJSON } = require("bson"); // bson library, install via npm
request(
{
url: `https://tcb-api.tencentcloudapi.com/api/v2/envs/${envId}/databases/${collectionName}/documents:find`,
method: "POST",
headers: {
"X-CloudBase-Authorization": "your authorization",
"X-CloudBase-SessionToken": "your token",
"X-CloudBase-TimeStamp": "the timestamp",
},
body: {
query: EJSON.stringify(
{
$and: [
{
price: {
$lt: 200,
},
},
{
price: {
$gt: 100,
},
},
], // find documents where price > 100 AND price < 200
},
{ relaxed: false },
),
},
json: true,
},
(err, response, body) => {
console.log(err);
console.log(response.statusCode);
const data = response.body.data.list.map((item) => EJSON.parse(item)); // EJSON deserialization
console.log(data);
},
);
$or
At least one of the given conditions must be satisfied.
Syntax: { $or: [ { <expression1> }, { <expression2> }, ... , { <expressionN> } ] }
// Node example
const request = require("request"); // request library, install via npm
const envId = "testEnv"; // environment ID
const collectionName = "testCollection"; // collection name
const { EJSON } = require("bson"); // bson library, install via npm
request(
{
url: `https://tcb-api.tencentcloudapi.com/api/v2/envs/${envId}/databases/${collectionName}/documents:find`,
method: "POST",
headers: {
"X-CloudBase-Authorization": "your authorization",
"X-CloudBase-SessionToken": "your token",
"X-CloudBase-TimeStamp": "the timestamp",
},
body: {
query: EJSON.stringify(
{
$or: [
{
price: {
$lt: 100,
},
},
{
price: {
$gt: 200,
},
},
], // find documents where price < 100 OR price > 200
},
{ relaxed: false },
),
},
json: true,
},
(err, response, body) => {
console.log(err);
console.log(response.statusCode);
const data = response.body.data.list.map((item) => EJSON.parse(item)); // EJSON deserialization
console.log(data);
},
);
$nor
Logical "NOR" — none of the given conditions may be satisfied.
Syntax: { $nor: [ { <expression1> }, { <expression2> }, ... { <expressionN> } ] }
// Node example
const request = require("request"); // request library, install via npm
const envId = "testEnv"; // environment ID
const collectionName = "testCollection"; // collection name
const { EJSON } = require("bson") // bson library, install via npm
request(
{
url: `https://tcb-api.tencentcloudapi.com/api/v2/envs/${envId}/databases/${collectionName}/documents:find`,
method: "POST",
headers: {
"X-CloudBase-Authorization": "your authorization",
"X-CloudBase-SessionToken": "your token",
"X-CloudBase-TimeStamp": "the timestamp",
,
},
body: {
query: EJSON.stringify({
$nor: [{
price: {
$lt: 100
}
}, {
price: {
$gt: 200
}
}] // find documents where price is neither < 100 nor > 200
}, {relaxed: false})
}
json: true
},
(err, response, body) => {
console.log(err)
console.log(response.statusCode)
const data = response.body.data.list.map(item => EJSON.parse(item)) // EJSON deserialization
console.log(data)
}
);
Update Command
$set
Sets a field to the specified value.
Syntax: { $set: { <field1>: <value1>, ... } }
// Node example
const request = require("request"); // request library, install via npm
const envId = "testEnv"; // environment ID
const collectionName = "testCollection"; // collection name
const { EJSON } = require("bson") // bson library, install via npm
request(
{
url: `https://tcb-api.tencentcloudapi.com/api/v2/envs/${envId}/databases/${collectionName}/documents:updateOne`,
method: "POST",
headers: {
"X-CloudBase-Authorization": "your authorization",
"X-CloudBase-SessionToken": "your token",
"X-CloudBase-TimeStamp": "the timestamp",
,
},
body: {
query: EJSON.stringify({
title: 'picture'
}, {relaxed: false}),
data: EJSON.stringify({
$set: {
style: {
color: "red",
size: "large"
}
}
}, {relaxed: false}) // find documents where title is "picture" and set the first matched document's style to {color:"red", size: "large"}
}
json: true
},
(err, response, body) => {
console.log(err)
console.log(response.statusCode)
console.log(response.body.data.updated)
}
);
$inc
Atomically increments a field by the given amount.
Syntax: { $inc: { <field1>: <amount1>, <field2>: <amount2>, ... } }
// Node example
const request = require("request"); // request library, install via npm
const envId = "testEnv"; // environment ID
const collectionName = "testCollection"; // collection name
const { EJSON } = require("bson"); // bson library, install via npm
request(
{
url: `https://tcb-api.tencentcloudapi.com/api/v2/envs/${envId}/databases/${collectionName}/documents:updateOne`,
method: "POST",
headers: {
"X-CloudBase-Authorization": "your authorization",
"X-CloudBase-SessionToken": "your token",
"X-CloudBase-TimeStamp": "the timestamp",
},
body: {
query: EJSON.stringify(
{
category: "computer",
},
{ relaxed: false },
),
data: EJSON.stringify(
{
$inc: {
price: 1000,
},
},
{ relaxed: false },
), // find documents where category is "computer" and increment the first matched document's price by 1000
},
json: true,
},
(err, response, body) => {
console.log(err);
console.log(response.statusCode);
console.log(response.body.data.updated);
},
);
$mul
Multiplies a field by the given amount.
Syntax: { $mul: { <field1>: <number1>, ... } }
// Node example
const request = require("request"); // request library, install via npm
const envId = "testEnv"; // environment ID
const collectionName = "testCollection"; // collection name
const { EJSON } = require("bson") // bson library, install via npm
request(
{
url: `https://tcb-api.tencentcloudapi.com/api/v2/envs/${envId}/databases/${collectionName}/documents:updateOne`,
method: "POST",
headers: {
"X-CloudBase-Authorization": "your authorization",
"X-CloudBase-SessionToken": "your token",
"X-CloudBase-TimeStamp": "the timestamp",
,
},
body: {
query: EJSON.stringify({
category: 'computer'
}, {relaxed: false}),
data: EJSON.stringify({
$mul: {
price: 1.5
}
}, {relaxed: false}) // find documents where category is "computer" and multiply the first matched document's price by 1.5
}
json: true
},
(err, response, body) => {
console.log(err)
console.log(response.statusCode)
console.log(response.body.data.updated)
}
);
$unset
Removes the specified field.
Syntax: { $unset: { <field1>: "", ... } }
// Node example
const request = require("request"); // request library, install via npm
const envId = "testEnv"; // environment ID
const collectionName = "testCollection"; // collection name
const { EJSON } = require("bson"); // bson library, install via npm
request(
{
url: `https://tcb-api.tencentcloudapi.com/api/v2/envs/${envId}/databases/${collectionName}/documents:updateOne`,
method: "POST",
headers: {
"X-CloudBase-Authorization": "your authorization",
"X-CloudBase-SessionToken": "your token",
"X-CloudBase-TimeStamp": "the timestamp",
},
body: {
query: EJSON.stringify(
{
category: "computer",
},
{ relaxed: false },
),
data: EJSON.stringify(
{
$unset: {
rating: "",
},
},
{ relaxed: false },
), // find documents where category is "computer" and remove the rating field from the first matched document
},
json: true,
},
(err, response, body) => {
console.log(err);
console.log(response.statusCode);
console.log(response.body.data.updated);
},
);
$push
Appends elements to the end of an array; accepts a single element or an array.
Syntax: { $push: { <field1>: <value1>, ... } }
// Node example
const request = require("request"); // request library, install via npm
const envId = "testEnv"; // environment ID
const collectionName = "testCollection"; // collection name
const { EJSON } = require("bson"); // bson library, install via npm
request(
{
url: `https://tcb-api.tencentcloudapi.com/api/v2/envs/${envId}/databases/${collectionName}/documents:updateOne`,
method: "POST",
headers: {
"X-CloudBase-Authorization": "your authorization",
"X-CloudBase-SessionToken": "your token",
"X-CloudBase-TimeStamp": "the timestamp",
},
body: {
query: EJSON.stringify(
{
category: "computer",
},
{ relaxed: false },
),
data: EJSON.stringify(
{
$push: {
tags: {
$each: ["tag1", "tag2", "tag3"],
},
},
},
{ relaxed: false },
), // find documents where category is "computer" and append tag1, tag2, tag3 to the tags field of the first matched document
},
json: true,
},
(err, response, body) => {
console.log(err);
console.log(response.statusCode);
console.log(response.body.data.updated);
},
);
$pop
Removes the last element from an array.
Syntax: { $pop: { <field>: <-1 | 1>, ... } }
1removes the last element from the array;-1removes the first element.
// Node example
const request = require("request"); // request library, install via npm
const envId = "testEnv"; // environment ID
const collectionName = "testCollection"; // collection name
const { EJSON } = require("bson"); // bson library, install via npm
request(
{
url: `https://tcb-api.tencentcloudapi.com/api/v2/envs/${envId}/databases/${collectionName}/documents:updateOne`,
method: "POST",
headers: {
"X-CloudBase-Authorization": "your authorization",
"X-CloudBase-SessionToken": "your token",
"X-CloudBase-TimeStamp": "the timestamp",
},
body: {
query: EJSON.stringify(
{
category: "computer",
},
{ relaxed: false },
),
data: EJSON.stringify(
{
$pop: {
tags: 1,
},
},
{ relaxed: false },
), // find documents where category is "computer" and remove the first element from the tags field of the first matched document
},
json: true,
},
(err, response, body) => {
console.log(err);
console.log(response.statusCode);
console.log(response.body.data.updated);
},
);
RunCommand
1. API Description
Feature: run a database command
2. Request URL
POST https://tcb-api.tencentcloudapi.com/api/v2/envs/${envId}/databases/-/documents:runCommand
{
// request body
}
3. Example request
// Node example
const request = require("request");
const envId = "testEnv"; // environment ID
const { EJSON } = require("bson")
request(
{
url: `https://tcb-api.tencentcloudapi.com/api/v2/envs/${envId}/databases/-/documents:runCommand`,
method: "POST",
headers: {
"X-CloudBase-Authorization": "your authorization",
"X-CloudBase-SessionToken": "your token",
"X-CloudBase-TimeStamp": "the timestamp",
},
body: {
// Supports aggregate, distinct, find, count and other commands.
// Syntax reference:
// https://www.mongodb.com/docs/manual/reference/method/db.runCommand/
// https://www.mongodb.com/docs/manual/reference/command/#user-commands
aggregate: "<collection>" || 1
// other aggregate parameters
distinct: "<collection>"
// other distinct parameters
find: "<string>",
// other find parameters
count: "<collection or view>",
// other count parameters
}
json: true
},
(err, response, body) => {
console.log(err)
console.log(response.statusCode)
console.log(response.body.data.updated)
}
);
Transaction
startTransaction
1. API Description
Feature: start a transaction
2. Request URL
POST https://tcb-api.tencentcloudapi.com/api/v2/envs/{envId}/databases/{collectionName}/transaction
3. Request body
None
4. Response body
| Field | Type | Required | Description |
|---|---|---|---|
| statusCode | Number | Yes | Status code, 200 |
| body | Object | Yes | Response body, structure shown below |
body
| Field | Type | Required | Description |
|---|---|---|---|
| requestId | String | No | Request ID |
| transactionId | String | No | Transaction ID |
| code | String | No | Error code |
| message | String | No | Error message |
5. Example
// Node example
const request = require("request"); // request library, install via npm
const envId = "testEnv"; // environment ID
const collectionName = "testCollection"; // collection name
const docId = "testDocId"; // document ID
const { EJSON } = require("bson"); // bson library, install via npm
request(
{
url: `https://tcb-api.tencentcloudapi.com/api/v2/envs/${envId}/databases/${collectionName}/transaction`,
method: "POST",
headers: {
"X-CloudBase-Authorization": "your authorization",
"X-CloudBase-SessionToken": "your token",
"X-CloudBase-TimeStamp": "the timestamp",
},
body: {},
json: true,
},
(err, response, body) => {
console.log(err);
console.log(response.statusCode);
console.log(response.body.transactionId);
},
);
commitTransaction
1. API Description
Feature: commit a transaction
2. Request URL
POST https://tcb-api.tencentcloudapi.com/api/v2/envs/{envId}/databases/{collectionName}/transaction/${transactionId}:commit
3. Request body
None
4. Response body
| Field | Type | Required | Description |
|---|---|---|---|
| statusCode | Number | Yes | Status code, 200 |
| body | Object | Yes | Response body, structure shown below |
body
| Field | Type | Required | Description |
|---|---|---|---|
| requestId | String | No | Request ID |
| code | String | No | Error code |
| message | String | No | Error message |
5. Example
// Node example
const request = require("request"); // request library, install via npm
const envId = "testEnv"; // environment ID
const collectionName = "testCollection"; // collection name
const docId = "testDocId"; // document ID
const { EJSON } = require("bson"); // bson library, install via npm
async function test() {
// 1. Start a transaction
const startTransactionRes = await new Promise((resolve, reject) => {
request(
{
url: `https://tcb-api.tencentcloudapi.com/api/v2/envs/${envId}/databases/${collectionName}/transaction`,
method: "POST",
headers: {
"X-CloudBase-Authorization": "your authorization",
"X-CloudBase-SessionToken": "your token",
"X-CloudBase-TimeStamp": "the timestamp",
},
body: {},
json: true,
},
(err, response, body) => {
if (err) {
reject(err);
}
resolve(response.body);
// console.log(err)
// console.log(response.statusCode)
// console.log(response.body.transactionId)
},
);
});
// 2. Commit the transaction
const commitTransactionRes = await new Promise((resolve, reject) => {
request(
{
url: `https://tcb-api.tencentcloudapi.com/api/v2/envs/${envId}/databases/${collectionName}/transaction/${startTransactionRes.transactionId}:commit`,
method: "POST",
headers: {
"X-CloudBase-Authorization": "your authorization",
"X-CloudBase-SessionToken": "your token",
"X-CloudBase-TimeStamp": "the timestamp",
},
body: {},
json: true,
},
(err, response, body) => {
if (err) {
reject(err);
}
resolve(response.body);
// console.log(err)
// console.log(response.statusCode)
// console.log(response.body.transactionId)
},
);
});
console.log(commitTransactionRes);
}
test();
rollbackTransaction
1. API Description
Feature: roll back a transaction
2. Request URL
POST https://tcb-api.tencentcloudapi.com/api/v2/envs/{envId}/databases/{collectionName}/transaction/${transactionId}:rollback
3. Request body
None
4. Response body
| Field | Type | Required | Description |
|---|---|---|---|
| statusCode | Number | Yes | Status code, 200 |
| body | Object | Yes | Response body, structure shown below |
body
| Field | Type | Required | Description |
|---|---|---|---|
| requestId | String | No | Request ID |
| code | String | No | Error code |
| message | String | No | Error message |
5. Example
// Node example
const request = require("request"); // request library, install via npm
const envId = "testEnv"; // environment ID
const collectionName = "testCollection"; // collection name
const docId = "testDocId"; // document ID
const { EJSON } = require("bson"); // bson library, install via npm
async function test() {
// 1. Start a transaction
const startTransactionRes = await new Promise((resolve, reject) => {
request(
{
url: `https://tcb-api.tencentcloudapi.com/api/v2/envs/${envId}/databases/${collectionName}/transaction`,
method: "POST",
headers: {
"X-CloudBase-Authorization": "your authorization",
"X-CloudBase-SessionToken": "your token",
"X-CloudBase-TimeStamp": "the timestamp",
},
body: {},
json: true,
},
(err, response, body) => {
if (err) {
reject(err);
}
resolve(response.body);
// console.log(err)
// console.log(response.statusCode)
// console.log(response.body.transactionId)
},
);
});
// 2. Roll back the transaction
const rollbackTransactionRes = await new Promise((resolve, reject) => {
request(
{
url: `https://tcb-api.tencentcloudapi.com/api/v2/envs/${envId}/databases/${collectionName}/transaction/${startTransactionRes.transactionId}:rollback`,
method: "POST",
headers: {
"X-CloudBase-Authorization": "your authorization",
"X-CloudBase-SessionToken": "your token",
"X-CloudBase-TimeStamp": "the timestamp",
},
body: {},
json: true,
},
(err, response, body) => {
if (err) {
reject(err);
}
resolve(response.body);
// console.log(err)
// console.log(response.statusCode)
// console.log(response.body.transactionId)
},
);
});
console.log(rollbackTransactionRes);
}
test();
CRUD in transaction
1. Example
// Node example
const request = require("request"); // request library, install via npm
const envId = "testEnv"; // environment ID
const collectionName = "testCollection"; // collection name
const docId = "testDocId"; // document ID
const { EJSON } = require("bson"); // bson library, install via npm
async function test() {
// 1. Start a transaction
const startTransactionRes = await new Promise((resolve, reject) => {
request(
{
url: `https://tcb-api.tencentcloudapi.com/api/v2/envs/${envId}/databases/${collectionName}/transaction`,
method: "POST",
headers: {
"X-CloudBase-Authorization": "your authorization",
"X-CloudBase-SessionToken": "your token",
"X-CloudBase-TimeStamp": "the timestamp",
},
body: {},
json: true,
},
(err, response, body) => {
if (err) {
reject(err);
}
resolve(response.body);
// console.log(err)
// console.log(response.statusCode)
// console.log(response.body.transactionId)
},
);
});
// 2. Insert a document within the transaction
const insertDocId = "lukeTest";
const insertTransactionRes = await new Promise((resolve, reject) => {
request(
{
url: `https://tcb-api.tencentcloudapi.com/api/v2/envs/${envId}/databases/${collectionName}/documents/${insertDocId}?transactionId=${startTransactionRes.transactionId}`,
method: "POST",
headers: {
"X-CloudBase-Authorization": "your authorization",
"X-CloudBase-SessionToken": "your token",
"X-CloudBase-TimeStamp": "the timestamp",
},
body: {
data: EJSON.stringify({
name: "luke",
}),
},
json: true,
},
(err, response, body) => {
if (err) {
reject(err);
}
resolve(response.body);
},
);
});
console.log(insertTransactionRes);
// 3. Update a document within the transaction
const updateTransactionRes = await new Promise((resolve, reject) => {
request(
{
url: `https://tcb-api.tencentcloudapi.com/api/v2/envs/${envId}/databases/${collectionName}/documents/${insertDocId}?transactionId=${startTransactionRes.transactionId}`,
method: "PATCH",
headers: {
"X-CloudBase-Authorization": "your authorization",
"X-CloudBase-SessionToken": "your token",
"X-CloudBase-TimeStamp": "the timestamp",
},
body: {
query: EJSON.stringify({
name: "luke",
}),
data: EJSON.stringify({
name: "jimmy",
}),
},
json: true,
},
(err, response, body) => {
if (err) {
reject(err);
}
resolve(response.body);
},
);
});
console.log(updateTransactionRes);
// 4. Query a document within the transaction
const queryTransactionRes = await new Promise((resolve, reject) => {
request(
{
url: `https://tcb-api.tencentcloudapi.com/api/v2/envs/${envId}/databases/${collectionName}/documents/${insertDocId}?transactionId=${startTransactionRes.transactionId}`,
method: "GET",
headers: {
"X-CloudBase-Authorization": "your authorization",
"X-CloudBase-SessionToken": "your token",
"X-CloudBase-TimeStamp": "the timestamp",
},
json: true,
},
(err, response, body) => {
if (err) {
reject(err);
}
resolve(response.body);
},
);
});
console.log(queryTransactionRes);
// 5. Delete a document within the transaction
const deleteTransactionRes = await new Promise((resolve, reject) => {
request(
{
url: `https://tcb-api.tencentcloudapi.com/api/v2/envs/${envId}/databases/${collectionName}/documents/${insertDocId}?transactionId=${startTransactionRes.transactionId}`,
method: "DELETE",
headers: {
"X-CloudBase-Authorization": "your authorization",
"X-CloudBase-SessionToken": "your token",
"X-CloudBase-TimeStamp": "the timestamp",
},
json: true,
},
(err, response, body) => {
if (err) {
reject(err);
}
resolve(response.body);
},
);
});
console.log(deleteTransactionRes);
// 6. Roll back the transaction
const commitTransactionRes = await new Promise((resolve, reject) => {
request(
{
url: `https://tcb-api.tencentcloudapi.com/api/v2/envs/${envId}/databases/${collectionName}/transaction/${startTransactionRes.transactionId}:rollback`,
method: "POST",
headers: {
"X-CloudBase-Authorization": "your authorization",
"X-CloudBase-SessionToken": "your token",
"X-CloudBase-TimeStamp": "the timestamp",
},
body: {},
json: true,
},
(err, response, body) => {
if (err) {
reject(err);
}
resolve(response.body);
// console.log(err)
// console.log(response.statusCode)
// console.log(response.body.transactionId)
},
);
});
console.log(commitTransactionRes);
}
test();