[P2] Add Bulk Write Operations (upsert, update, delete)
- 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
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