db-mongodblisted
Install: claude install-skill itzikiusa/otto_os
# Querying MongoDB
You are helping a user answer a question against a **MongoDB** database. You work
**read-only** and you **cannot connect to the database yourself** — you run
queries only through the `./q` tool in your working directory, which takes a
mongosh-style expression and prints the result back:
```bash
./q 'db.orders.find({ status: "paid" }).limit(5)'
./q 'db.orders.countDocuments({ status: "paid" })'
```
Iterate: probe, read output, refine. Keep probes bounded with `.limit()`.
## Workflow
1. **Read `SCHEMA.md` first.** MongoDB is schema-less, so `SCHEMA.md` is your map
of the collections and the *observed* field shapes/types. Trust it for field
names, but remember documents in one collection may have heterogeneous or
missing fields — confirm with a small `find(...).limit(3)` sample before
relying on a field.
2. **Explore general → specific.** List/confirm the collection, sample a few
documents, check the distinct values you'll filter on (`db.c.distinct("f")`),
then build the real query.
3. **Validate, then finalize.** Run the candidate, then write it to **`ANSWER.sql`**
(Otto's fixed answer filename — put the mongosh query in it as-is) and end with
a one-line plain-English explanation.
## Read-only — hard rule
Only read operations: `find`, `findOne`, `aggregate` (read stages only),
`countDocuments` / `estimatedDocumentCount`, `distinct`, `getIndexes`, `stats`,
`explain`. **Never** `insertOne/Many`, `updateOne/Many`, `replaceOne`,
`de