Obsidian Bases — Référence technique: Créer, Embeder, Syntaxe, Filtres, Fonctions et Opérateurs
Référence exhaustive en français, basée sur la documentation Obsidian (Bases) et enrichie d’exemples applicatifs. Elle couvre la création/embedding, la structure YAML complète, la logique de filtres (and/or/not), les opérateurs, les fonctions (globales et par type), les types de propriétés (note/file/formula), et les pièges fréquents.
Créer et embeder une base
- Palette : Bases: Create new base (fichier .base) ou Bases: Insert new base (bloc
baseintégré). - Explorateur : clic droit dossier → New base.
- Ruban : Create new base (dossier du fichier actif).
Embed :
- Fichier :
![[Nom.base]]· Vue spécifique :![[Nom.base#Nom de la vue]] - Bloc : collez un bloc
baseavec YAML valide (voir ci‑dessous).
Structure YAML complète
Une base décrit filters, formulas, properties, views. Les filtres globaux (section filters) s’appliquent à toutes les vues et se concatènent en AND avec les filtres de vue.
```base
filters:
or:
- file.hasTag("writing/draft")
- and:
- file.hasTag("writing/idea")
- not:
- file.inFolder("Archive")
formulas:
age_days: "((now() - file.ctime) / 86400000).toFixed(0)"
priority_label: "if(priority >= 4, 'Haute', if(priority >= 2, 'Moyenne', 'Basse'))"
properties:
formula.age_days: { displayName: "Âge (jours)" }
formula.priority_label: { displayName: "Priorité" }
views:
- type: table
name: "Backlog"
limit: 50
filters: { and: [ "status != 'done'" ] }
order: [ formula.priority_label, file.mtime ]
```
Filtres : conjonctions & éditeur avancé
Trois conjonctions : and (toutes vraies), or (au moins une), not (aucune). Les “statements” acceptent comparaisons, fonctions et propriétés.
- Exemples :
file.hasTag('writing/draft'),file.inFolder('Contacts'),file.mtime > now() - "7d",status == 'open'. - Global vs Vue : les filtres globaux + les filtres de la vue s’agrègent en
AND. - Éditeur avancé : bouton “code” de la boîte de filtres pour les cas UI‑inexpressibles (regexp, fonctions imbriquées…).
Opérateurs : arithmétiques, comparaison, dates, booléens
- Arithmétiques :
+ - * / % ( )— ex.(price / age).toFixed(2) - Comparaison :
== != > < >= <=— ex.priority >= 4 - Booléens :
! && ||— ex.!(status == 'done') - Dates : durées
"14d" "1M" "2h"— ex.file.mtime > now() - "14d"
Fonctions : globales et par type
Globales (sans type) : if(), now(), today(), link(), image(), icon(), number(), list().
```base
formulas:
formatted_price: "if(price, price.toFixed(2) + ' €')"
badge: "link('[[NomDeNote]]', icon('arrow-right'))"
# Exemples de filtres
# file.mtime > now() - "30d"
# title.contains("Obsidian").and == true # via éditeur avancé
```
Par type :
- Date :
format('YYYY-MM-DD'),relative(),date().time() - String :
contains(),replace(),lower(),title(),trim() - Number :
round(),toFixed(),abs() - List :
contains(),map(),filter(),unique(),join() - File/Link :
file.hasLink(),link().asFile(),file.asLink()
Types & propriétés : note.*, file.*, formula.*, this
- note.* : frontmatter métier — ex.
note.status,author. - file.* : méta — ex.
file.ext,file.mtime,file.inFolder(),file.tags. - formula.* : calculs réutilisables — ex.
formula.priority_label. - this (bases embarquées/sidebar) : référence la note courante/active — ex.
file.hasLink(this.file).
Anti‑patterns & pièges usuels
- Références circulaires entre
formulas— scindez en formules A → B (pas B → A). file.backlinksmassifs — préférezfile.links+ filtres; limitezlimit.- Littéraux YAML — entourez vos textes de guillemets; évitez les caractères spéciaux non échappés.
- Types hétérogènes (ex. nombre vs texte) — normalisez les propriétés métier.
FAQ Bases
Puis‑je trier sur une formula ? Oui : order: [ formula.nom ].
Comment limiter les résultats ? Avec limit au niveau de la vue (ex. 50).
Comment filtrer par période ? file.mtime > now() - "7d", ou utilisez today() pour dates sans heure.
Un bloc base peut remplacer un fichier .base ? Oui, collez la même syntaxe YAML dans le bloc.