Azure / Azure/CosmosDBShell

[P2] Add Bulk Write Operations (upsert, update, delete)

Open
#107 3 comments 0 reactions 0 assignees View on GitHub
enhancement
Dominant language
C#
Stars
3
Forks
7
Avg merge
1d 9h
Merged PRs (30d)
18

Description

## Feature Request

**Priority:** P2 (Medium)

### Description

CosmosDB Shell supports array input for `mkitem` (batch create) but lacks bulk upsert, update, and delete operations. Bulk operations are critical for data migration and maintenance tasks.

### Comparable Features in Other Shells

- **mongosh**: `bulkWrite()`, ordered/unordered bulk operations
- **sqlcmd**: Bulk insert via `bcp`

### Proposed Behavior

Add a `bulk` command or extend existing commands:
- `bulk upsert ` — Bulk upsert from JSON array or file
- `bulk delete ` — Bulk delete matching documents
- `bulk patch ` — Bulk patch operations
- Support concurrency control (max parallelism)
- Report progress, success/failure counts, and total RU cost

### Example Usage

```
bulk upsert ./updates.json --max-parallelism 10
bulk delete "SELECT c.id, c.pk FROM c WHERE c.expired = true"
bulk patch ./patches.json
```

Contributor guide

Open the contributing guide

Research direction

Start by inspecting the existing mkitem array-input command and the shell's command entry points to understand how batch operations are currently handled. Define the supported bulk commands, input forms, concurrency behavior, progress and cost reporting, then add coverage for the agreed behavior; done means the scope and completion criteria are confirmed for upsert, delete, and patch.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp
Domain
cli, database
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.