我笔记的yaml区有个ctime属性
我怎么从所有笔记里筛选出没有ctime属性的笔记
和怎么筛选出有ctime的属性,但忘记标志时间的笔记
只能用dataviewjs了,dataview无法区分undefined和null
```dataviewjs
dv.header(4,"没有ctime属性的笔记")
dv.table(["link", "String(ctime)"], dv.pages().where(p=>p.ctime===undefined).map(p=>[p.file.link, String(p.ctime)]))
dv.header(4,"忘记标志时间的笔记")
dv.table(["link", "String(ctime)"], dv.pages().where(p=>p.ctime===null||p.ctime==="").map(p=>[p.file.link, String(p.ctime)]))
```
恩恩,有个问题很奇怪,
笔记里ctime原先标志过时间的
然后ctime不小心清除了时间「不是移除crime属性」,但是该笔记却没有出现在“忘记标志时间的笔记里”
应该是 ctime: ""
变成空字符串了吧,源码模式查看下,这种情况不是null是空字符串,应该加上判断条件
dv.header(4,"忘记标志时间的笔记")
dv.table(["link", "String(ctime)"], dv.pages().where(p=>p.ctime===null||p.ctime==="").map(p=>[p.file.link, String(p.ctime)]))
嗯嗯,是的,这样就没有问题了!
非常感谢
还有个小问题,这个搜索出来的结果能按“文件名”排个序吗?
where后面接着写; .sort(b => b.file.name, “desc”)
是这样吗?
dv.pages().where(p=>p.ctime===undefined).map(p=>[p.file.link ]));.sort(p=>p.file.name, “desc”)
这个不行
dv.header(4,"忘记标志时间的笔记")
dv.table(["link", "String(ctime)"], dv.pages().where(p=>p.ctime===null||p.ctime==="").sort(p=>p.file.name, "desc").map(p=>[p.file.link, String(p.ctime)]))
let pageData = dv.pages()
.filter(p => !p.ctime) // 这个就是排序你没有 ctime 这个key的笔记
.sort(b => b.file.name, "asc")
//.sort(b => b.file.name, "desc")
.slice(0, 10); //限制显示数量
let tableRows = pageData.map(b => [b.file.link, b.file.ctime, b.tags]); // 行数据 ,与下面的列数据 对应,如果要改的话,注意数量
let tableHeader = ["Name", "创建时间", "标签"];
dv.table(tableHeader, tableRows); // 最后 \ 装盘:创建并展示表格
非常感谢,
非常感谢
能再请教下吗?
就是这个筛选出来的笔记后面能出现此笔记的反链数吗?
比如筛选出了a笔记,希望能看到 a笔记+数量「a笔记的反链数」
最好能从某个文件夹里去筛选「没有ctime属性的笔记」
length(file.inlinks)
```dataview
list length(file.inlinks)
limit 100
```
或在原来基础上,用p.file.inlinks.length
```dataviewjs
dv.header(4,"忘记标志时间的笔记")
dv.table(["link", "inlinks", "String(ctime)"], dv.pages().where(p=>p.ctime===null||p.ctime==="").map(p=>[p.file.link, p.file.inlinks.length, String(p.ctime)]))
```
能从某个指定文件夹里去筛选「没有ctime属性的笔记」吗?
好的,非常感谢