Cosmos DB Increment with Partial Document Update

808 Views Asked by At

https://learn.microsoft.com/en-us/azure/cosmos-db/partial-document-update#supported-operations says that I can use "increment" to increment a value in my database, however this code

const operations =
          [
              { op: 'increment', path: '/public/inventory/irradish', value:  irradish},
              { op: 'increment', path: '/public/inventory/sunmelon', value:  sunmelon},
              { op: 'set', path: '/map/garden/lastUse', value:  time}
          ];
          const { resource: updated } = await container
          .item(
              id = email, 
              partitionKeyValue = email
          )

throws this error:

Error: Message: {"Errors":["Invalid value of the patch operation 'op' property in patch request: 'increment'"]} ActivityId: f1bb8b88-ab68-4f2b-b244-8b021b0d9021,...

How do I increment?

2

There are 2 best solutions below

0
Sajeetharan On BEST ANSWER

You need to use "incr" as answered above.

However regarding the documentation, increment is just an operation. The samples in the Node SDK repository illustrates how to do increment operation,

const multipleOperations: PatchOperation[] = [
      {
        op: "add",
        path: "/aka",
        value: "MeFamily",
      },
      {
        op: "replace",
        path: "/lastName",
        value: "Jose",
      },
      {
        op: "remove",
        path: "/parents",
      },
      {
        op: "set",
        path: "/address/zip",
        value: 90211,
      },
      {
        op: "incr",
        path: "/address/zip",
        value: 5,
      },
    ];
    const { resource: patchSource2 } = await container.item(patchId!).patch(multipleOperations);
    if (patchSource2) {
      console.log(`Patched ${JSON.stringify(patchSource)} to new ${JSON.stringify(patchSource2)}.`);
    }
0
AuWiMo On

The way to do it is to use "incr" instead of "increment".

I requested the documentation be updated to reflect this.