跳到內容

查詢

查詢(Query)讓你使用結構化篩選規則依屬性值篩選 Object。不同於搜尋會在所有內容中進行全文比對,查詢針對特定屬性以型別感知運算子進行篩選。

查詢使用結構化 FilterRule 條件來比對 Object。每條規則指定一個屬性、一個運算子和一個值。提供多個規則時,會以 AND 邏輯組合——只有符合所有條件的 Object 才會被回傳。

type 是一個特殊的篩選屬性,比對 Object 的 type 名稱。其他所有屬性都比對 frontmatter 屬性值。

使用 CLI 列出所有 Object 或搜尋:

Terminal window
# 列出所有 Object
tmd object list
tmd object list --json
# 全文搜尋
tmd search "concurrency"

已封存的 Object 預設會從查詢和列表結果中排除。這讓你的預設檢視不會被軟刪除的內容干擾,同時不會從 vault 中永久移除它們。若要包含已封存的 Object,使用 --include-archived flag:

Terminal window
tmd object list --include-archived

View 支援型別感知的篩選運算子。每種屬性類型有一組有效的運算子:

屬性類型運算子
string, urlis, is_not, contains, does_not_contain, starts_with, ends_with, is_empty, is_not_empty
numbereq, neq, gt, gte, lt, lte, is_empty, is_not_empty
date, datetimeeq, before, after, on_or_before, on_or_after, is_empty, is_not_empty
selectis, is_not, is_empty, is_not_empty
multi_select, relationcontains, does_not_contain, is_empty, is_not_empty
checkboxis, is_not

篩選規則定義在 view 設定中:

filter:
- property: status
operator: is
value: reading
- property: rating
operator: gt
value: "3"

多個篩選規則以 AND 邏輯組合。

查詢支援依屬性值排序。在 TUI view 模式中使用時,排序規則定義在 view 設定中:

sort:
- property: rating
direction: desc

排序方向為 asc(遞增)或 desc(遞減)。多個排序規則依序套用(第一條規則為主排序)。

如果 SQLite 索引無法使用(遺失或損毀),查詢會自動退回到檔案系統掃描,並在記憶體中進行篩選比對。備用路徑支援上述所有相同的運算子,確保結果一致。效能會降低(O(n) 檔案讀取而非索引查詢),但操作仍能成功完成。觸發備用模式時會記錄警告。