Step 14 of 18 of the SQL tutorial. A 1H spectrum holds ranges, a range holds signals, and a signal holds couplings — four tables, three joins, one row per coupling constant. 7-Bromo-1H-indole returns five rows: the range 6.62–6.68 ppm carries a signal at 6.649 that is a dd with J = 3.16 and 2.21 Hz, the small ortho and meta couplings of the indole 3-position. Drop the last join and you get signals without their J values; drop two and you get ranges. Mango descends the same four levels with $elemMatch inside $elemMatch.
It opens on the query SELECT c.preferred_name, s.solvent, ROUND(r.from_ppm, 2) AS range_from, ROUND(r.to_ppm, 2) AS range_to, ROUND(g.delta_ppm, 3) AS delta_ppm, g.multiplicity, ROUND(k.coupling_hz, 2) AS j_hz FROM nmr_spectra s JOIN nmr_ranges r ON r.nmr_spectrum_id = s.id JOIN nmr_signals g ON g.nmr_range_id = r.id JOIN nmr_couplings k ON k.nmr_signal_id = g.id JOIN compounds c ON c.id = s.compound_id WHERE c.preferred_name = '7-Bromo-1H-indole' ORDER BY delta_ppm, j_hz DESC, which you can run and change in place.
Ask the same question of a chemical dataset in SQL and in Mango and compare the two answers. The database is a SQLite file your browser downloads once and queries locally, so nothing you write ever leaves your machine — which is also why the tool needs JavaScript.