Introduction
A step-by-step guide to help you open, use, and validate the Watch screen — the live change-stream monitor built into NoSqlStudio. Follow from Step 1 to the end, in order. Each step tells you what to do and what you will see.
How to read this manual
Each step has:
- Do — the exact action (click, type, run such-and-such command).
- See — what should happen on screen. This is your “pass / fail”.
- Why — extra context, only when it helps (skip it if you're in a hurry).
Before you start
Concept
What Watch is
Watch shows every insert, update, delete and other change happening on your database in real time, as cards that slide into a timeline. It is built on MongoDB change streams.
Heads-up
Watch needs a replica set
Change streams are a replica-set feature. Watch works with MongoDB Atlas clusters and with self-hosted replica sets, but not with a standalone server. Pointing Watch at a standalone server is covered in Step 30.
You will need:
- 1A connected MongoDB replica set — an Atlas cluster or a self-hosted replica set.
- 2A second tab where you can run shell commands — the Scratchpad or the Mongo Shell tab — to generate changes.
- 3In the shell commands below, replace
<database>and<collection>with names of your own. Always runuse <database>first so the command runs against the right database.
Estimated time for the full walkthrough: ~20 minutes.
Your first watched change
Get Watch open and confirm a single change reaches the timeline.
Connect to a replica set
Connect NoSqlStudio to a MongoDB replica set or Atlas cluster, using your connection string — for example mongodb+srv://<user>:<password>@<cluster-host>/.
The connection opens and appears in the sidebar.
Open Watch Deployment
In the toolbar, choose Monitoring ▼ → Watch for Changes → Watch Deployment.
A new tab opens with a 🎥 header, a green pulsing LIVE status pill, and a mini-map of the cluster showing the PRIMARY node in green next to its secondaries.
Insert a test document
In another tab (the Scratchpad), select a database and insert a document. Run the use command first:
use <database>
db.test_cw.insertOne({ hello: "test1", n: 1 })See the change land
Switch back to the Watch tab.
Within about a second, a green 🟢 Insert card for <database>.test_cw slides in at the top of the timeline.
This is the core of the tool — the live stream is connected and delivering changes. ✅
Filtering and exporting
Generate traffic in several collections
Run a few inserts across different collections:
use <database>
db.orders.insertOne({ item: "book" })
db.users.insertOne({ name: "Ana" })
db.test_cw.insertOne({ n: 1 })A card slides in for each insert.
Filter the timeline
Type a collection name (for example orders) in the 🔍 filter field in the header.
Only the events whose namespace matches the text stay visible. Clear the field to show everything again.
Export the events
With the filter cleared, click 📥 Export.
The visible events are saved as an .ndjson file in your Downloads folder.
Concept
NDJSON. One JSON document per line — the natural format for a stream of events, easy to re-import or grep.
Recording and replay
Start a recording
In the right-hand panel, find the 🎬 Recording card and turn the toggle on.
The card switches to a recording state.
Generate events while recording
Run a few changes in another tab:
use <database>
db.test_cw.insertOne({ n: 1 })
db.test_cw.insertOne({ n: 2 })
db.test_cw.insertOne({ n: 3 })The card shows a live counter, such as recording • 3 events.
Stop the recording
Turn the 🎬 Recording toggle off.
The recording is automatically downloaded as an .ndjson file.
Replay a recording from a file
Click 📂 Open recording and select the .ndjson file you just saved.
The header gets a purple 📂 replay (file) badge and the recorded events return to the timeline.
Leave replay mode
Click the ✕ on the purple replay badge.
Replay mode ends and the live stream resumes.
Replay the recent past
In the ⏪ Replay card, click Go back 5 minutes.
The stream reopens starting a few minutes in the past, so you see changes that already happened.
Heads-up
This works only if the cluster's oplog still holds that much history. On a busy cluster the oplog window can be shorter than 5 minutes.
Webhooks and alerts
Watch can forward changes to an external URL and raise desktop alerts on a rule.
Get a test webhook URL
Open https://webhook.site in your browser and copy the unique URL it gives you (format https://webhook.site/<uuid>).
Add the webhook
In the 📡 Webhooks card, paste the URL and click + Add.
The webhook appears in the list.
Configure the webhook
Click the ⚙ on the webhook to expand its settings. Change the HTTP method to PUT, add a header Authorization with the value Bearer xxx, and in the event chips select only 🔴 Delete.
The webhook is now set to fire only on deletes, as a PUT request with your header.
Insert — nothing is forwarded
Run an insert:
use <database>
db.test_cw.insertOne({ foo: 1 })webhook.site receives nothing — the webhook is filtered to deletes only.
Delete — the webhook fires
Run a delete:
use <database>
db.test_cw.deleteOne({ foo: 1 })webhook.site receives a PUT request with the Authorization: Bearer xxx header and the change event as EJSON in the body. The card shows ✓ 1 sent.
Create an alert
In the 🔔 Alerts card, give the alert a name (for example Deleted test), set the namespace pattern as a regular expression — ^.*\.test_cw$ — and click + Create alert.
The alert appears in the list.
Narrow the alert
Click the ⚙ on the alert and, in the event chips, select only 🔴 Delete.
The alert will now fire only on deletes that match the pattern.
Trigger the alert
Run another delete:
use <database>
db.test_cw.deleteOne({ n: 1 })The first time, the system asks for notification permission — allow it once. Then a native desktop notification appears, a sound plays, and the alert history records the hit.
Concept
Recording does not need to be on for alerts to work — alerts are evaluated independently, and their history is kept on its own.
Sound and the cluster mini-map
Turn sound on
In the header, click 🔔 Sound off so it becomes Sound on.
Hear an insert
Run an insert:
use <database>
db.test_cw.insertOne({ n: 10 })A short high beep plays.
Hear a delete
Run a delete:
use <database>
db.test_cw.deleteOne({ n: 10 })A low beep plays — a different pitch from the insert, so you can tell changes apart by ear.
Watch the mini-map pulse
In the cluster mini-map, the green PRIMARY node pulses with an expanding ring every time an event arrives.
Behaviors and edge cases
Persistence
Close the Watch tab (the ✕ on the tab title) and reopen it from the menu.
Your webhooks, alerts, sound setting and buffer size are all still there.
Refresh the database list
Create a new database in another tab, then click 🔄 Refresh in the Watch header.
The new database appears in the scope dropdown.
Buffer size
Type 50 in the Buffer field in the header.
Only the 50 most recent events stay visible — older cards drop off.
Clear on scope change
With a stream running on 🌐 Cluster scope, switch to 🗄 a single database.
The timeline clears and the stream restarts for the new scope.
Humanized error on a standalone
Connect to a standalone MongoDB server (not a replica set) and try Watch Deployment.
A clear, friendly message explains that Watch requires a replica set — not a raw server error like “$changeStream stage is only supported…”.
The native Tools menu
Open Watch from the Tools menu
Use the native menu: Tools → Change Watcher → Watch Deployment (keyboard shortcut Ctrl+Alt+W).
The Watch tab opens, exactly as from the toolbar.
Heads-up
The native menu is built when the app starts. After an in-app reload (Ctrl+R) the menu may be stale — fully restart NoSqlStudio to see menu changes.
Cleanup (when you're done)
Stop the stream with the Stop button in the header, then drop the test collection:
use <database>
db.test_cw.drop()The stream is stopped and the test collection is gone.
Summary of what you validated
| Stage | Feature |
|---|---|
| 1 | Open Watch and see a live change reach the timeline |
| 2 | Filter the timeline and export events to NDJSON |
| 3 | Record events, replay from a file, and replay the recent past |
| 4 | Webhooks (method, headers, event filter) and desktop alerts |
| 5 | Sound cues per event type and the cluster mini-map pulse |
| 6 | Persistence, refresh, buffer, scope clearing, humanized errors |
| 7 | The native Tools menu entry and its shortcut |