The thing is…
For each one of my 14,000 film pages, I maintain a Viewing History section, under which I keep track of when the film was watched and with who, my rating, and my review. It’s all done with double colons (::) in keeping with dataview, like this:
Example: '2001: A Space Odyssey' because of multiple watches
# Viewing History
## watched:: 2023-01-11
who:: nick and stu
## watched:: 2021-01-12
who:: nick and Lou for Hal's Birthday
myrating:: 4
## watched:: 2016-01-12
who:: nick and Jim
I have never known how to create a decent list of all viewed films, in descending order, that was able to deal with multiple viewings. I don’t want to have to enumerate and/or get into a bunch of if thens, with watched[0], watched[1], watched[2], etc.
What I want (really really want)
(that Stanley Cup playoffs commerical is getting to me)
a table like this...
watched title who my rating 2026-05-02 Junebug nick and stu 3.5 2026-05-01 2001 A Space Odyssey nick and stu and terry 4.5 2026-04-24 Viva Las Vegas nick and mary 2 2026-04-22 2001 A Space Odyssey nick and charley 4.5
… or a comma separated list like this (which is preferable, actually, as it is easier to read when opening an md file outside of obsidian).
2026-05-02, Junebug, nick and stu
2026-05-01, 2001 A Space Odyssey, nick and stu and terry
The important thing is to have the various re-watches listed as individual watches (rows) in descending order, and if at all possible, output as a md table/list so that I can see info rather than code when opening the md file outside of Obsidian.
What I’ve Tried
Tried this dvjs code:
const pages = dv.pages("#filmtitle or #short or #tvtitle")
.where(p => p.watched && p.watched.year == '2022' && p.watched.month == '07')
.sort(p => p.watched, 'desc');
dv.table(["file", "watched"], pages.map(f => [f.file.link, f.watched]));
See Results: doesn't include rewatches
I watched 2001 on Jan 14 and it doesn’t appear on this list because it is a rewatch, so not watched[0] .
I also tried this:
TABLE WITHOUT ID "[[" + title + "]]" as "Film", watched as "Viewing Date", who as "watched with"
from "Films" or "Films not in collection"
WHere watched != null
limit 25
sort watched DESC
Conclusion
I’ve tried too many things in the past 5 years to list here. Needless to say, none worked.
Maybe I should give up on Dataview(and js), and give it a shot with Datacore? I read that it can do things with headings… and maybe that’s the way to do this given that each of my watched dates is a heading: ## watched:: 2025-09-12
Personally I would rather not depend on them being headings so if I could get dataview and/or dvjs to work, that would be fantastic.



