
目次
Notionのデータベースを外から絞り込むとき、条件はどこまで複雑にできるのか。
画面ではいくらでも条件を足せます。外からも同じかというと、はっきりした上限がありました。
深さ、幅、条件の種類。3つとも限界まで押して測りました。
入れ子は2段まででした
まず、いちばん効く制約から。
3段目で断られます
「AかつB」の中に「CまたはD」を入れる。これが1段の入れ子です。さらにその中にもう1段。どこまで深くできるかを試しました。
| 深さ | 結果 |
|---|---|
| 1段 | 通る |
| 2段 | 通る |
| 3段 | 断られる |
2段で打ち止めです。3段目からは、そういう形は受け付けないという返り方になります。
「かつ」と「または」は混ぜられます
2段という制約の中では、自由に組み合わせられました。
| 形 | 結果 |
|---|---|
| 「かつ」の中に「または」 | 通る |
| 「または」の中に「かつ」 | 通る |
どちらも通ります。2段でも、かなりのことが書けます。
実務では、だいたい足ります
2段というのは、こういう条件が書ける深さです。
「受注または商談中」かつ「金額が10万以上」かつ「期日が今週より後」。
これで1段の入れ子です。日常的に使う絞り込みは、まず2段に収まります。
足りなくなるのは、条件を自動で組み立てているときです。使う人が選んだ条件を機械的に入れ子にしていくと、気づかないうちに3段を超えます。
深さは、書き方で変わります
同じ意味の条件でも、書き方によって深さが変わります。
| 書き方 | 深さ |
|---|---|
| 条件を横に並べる | 0段 |
| 1つだけ「または」でくくる | 1段 |
| 条件を1つずつ「かつ」でくくって重ねる | 条件の数だけ深くなる |
3つ目が事故のもとです。条件を足すたびに1段ずつ深くなる作りにしていると、3つ目で止まります。
横に並べれば何個でも(100個までは)入ります。深くするのではなく、横に並べてください。
横には100個まで並べられます
深さの次は、幅です。
101個で断られました
「AかつBかつC……」と条件を横に並べていきます。
| 条件の数 | 結果 |
|---|---|
| 2 / 10 / 50 / 100 | 通る |
| 101 | 断られる |
ちょうど100が上限です。こちらは数字がはっきり返ってきます。
100に当たるのは、こういう場面です
手で書いていて100個を超えることはまずありません。当たるのは、自動で組み立てているときです。
| 場面 | 条件の数 |
|---|---|
| 選んだタグで絞る | タグの数だけ |
| IDの一覧で絞る | IDの数だけ |
| 除外リストを適用する | 除外する数だけ |
2つ目が危ないです。「この100件を取ってきて」という書き方をしていると、101件目で止まります。
件数が増えてから初めて止まるので、作ったときには気づけません。
しかも、止まり方がはっきりしているのは救いです。「100を超えています」と数字で返ってきます。
何が悪いのか分からないまま止まる、ということはありません。この記事で出てくる制約の中では、いちばん親切な断られ方です。
超えるなら、分けて投げます
100を超える場合は、100個ずつに分けて、何回かに分けて取ります。
結果をあとで合わせれば同じことです。1回に100件までしか返らない話と合わせて、100という数字が2か所で出てきます。
「今週」はあるのに「今月」がありません
ここが、いちばん引っかかったところです。
日付の条件を全部数えました
日付には14種類の条件が用意されていました。ほかの型と比べて、群を抜いて多いです。
その中に、期間を指す条件があります。
| 週 | 月 | 年 | |
|---|---|---|---|
| 過ぎた | ある | ある | ある |
| 今の | ある | 無い | 無い |
| これからの | ある | ある | ある |
「今週」だけがあって、「今月」と「今年」がありません。
送ると断られます
あるものと思って「今月」を送ると、断られます。「今年」も同じです。
過ぎたほうと、これからのほうには、週も月も年も揃っています。「今の」だけが週しかありません。
今月を絞るには、日付で挟みます
月初と月末を自分で計算して、「その日以降」と「その日以前」の2つで挟みます。
| やりたいこと | 書き方 |
|---|---|
| 今週のもの | 「今週」1つで済む |
| 今月のもの | 月初以降 かつ 月末以前 |
| 今年のもの | 1月1日以降 かつ 12月31日以前 |
手間は増えますが、できないわけではありません。知らずに探し続けるのがいちばん無駄です。
1つ注意があります。月末の日付は、月によって変わります。28日、30日、31日。
固定で31日と書いておくと、2月に存在しない日付を送ることになります。
翌月の1日より前、という書き方にしておけば、月末の日数を気にせずに済みます。こちらのほうが安全です。
図にすると、こういう形です
使える条件は、型で大きく違います
型ごとに、使える条件の数を数えました。
14種類から2種類まで
| 型 | 条件の数 |
|---|---|
| 日付 | 14 |
| 文字・タイトル | 8 |
| 数値 | 8 |
| セレクト | 4 |
| マルチセレクト | 4 |
| 担当者 | 4 |
| チェックボックス | 2 |
| ファイル | 2 |
日付だけが別格です。ほかの型の2倍近くあります。
この差は、設計に効いてきます。あとで細かく絞りたい情報は、絞りやすい型で持っておくということです。
| 持たせ方 | あとで絞れる細かさ |
|---|---|
| 日付の列に入れる | 前後・期間・空欄まで絞れる |
| 文字の列に日付を書く | 含む・始まる・終わるだけ |
| チェックボックスで持つ | はい・いいえだけ |
「2026年10月」と文字で入れていると、「10月以降」という絞り方ができません。日付の列にしておけば、あとから何とでもなります。
セレクトは完全一致だけです
ここも引っかかりやすいところです。セレクトには「含む」がありません。
「受注」という文字を含むものを探す、という書き方ができません。選択肢の名前と完全に一致するかどうかだけです。
ところが、マルチセレクトには「含む」があります。同じ選択肢なのに、扱いが違います。
| 型 | 「含む」 |
|---|---|
| セレクト | 無い |
| マルチセレクト | ある |
| 文字 | ある |
ファイルは中身で絞れません
ファイルの列にできるのは、「入っているか」「入っていないか」の2つだけです。
ファイル名で絞る、種類で絞る、といったことはできません。ファイルを外から置く話を書きましたが、置いたあとに探す手段は限られます。
探す必要があるなら、ファイル名を文字の列にも入れておいてください。そちらでなら絞れます。
担当者の列も4種類だけです。「誰が入っているか」と「入っているか」しか絞れません。
チェックボックスに至っては2種類です。ただ、これは値が2つしかないので足ります。困るのはファイルと担当者のほうです。
条件が0個だと、全件返ります
最後に、いちばん危ないところです。
エラーにならずに、全件返ります
「かつ」の中身を空にして送ってみました。
| 送ったもの | 結果 |
|---|---|
| 絞り込みを空にする | 断られる |
| 「かつ」の中身を空にする | 全件返る |
後者はエラーになりません。絞り込みがなかったことにされて、全件が返ってきます。
組み立てているときに起きます
条件を自動で組み立てている場合、結果として0個になることがあります。
| 場面 | 条件の数 |
|---|---|
| 使う人が何も選ばなかった | 0個 |
| 前の処理から渡された一覧が空だった | 0個 |
| 除外リストが空だった | 0個 |
どれもありえます。そしてそのまま全件が返ります。
全件に何かをすると、事故になります
返ってくるだけなら、まだ害は小さいです。問題はそのあとに何かをする場合です。
絞り込んだ行だけを更新するつもりが、全件を更新してしまう。削除する処理なら、もっと深刻です。
防ぎ方は簡単で、条件が0個なら、絞り込みを送らずに処理を止めます。
「条件が空なら何もしない」と先に書いておいてください。空のまま送ると、意図と正反対のことが起きます。
ほかにも、同じ形の事故があります
この媒体で測ってきた中に、同じ性質のものがいくつもありました。
| やったこと | 起きること |
|---|---|
| 絞り込みの条件を空で送る | 全件が返る |
| 取る件数にマイナスを送る | 0件なのに「まだある」 |
| 取る件数に101を送る | 黙って100件になる |
3つともエラーにならずに、意図と違う結果が返ります。
共通しているのは、「送る前に手元で確かめられる」ことです。数を数えるだけで防げます。
2段の中で、どう書くか
制約が分かったところで、書き方の話をします。
よく使う形は3つです
| やりたいこと | 形 |
|---|---|
| 全部の条件を満たす | 「かつ」だけを並べる(深さ0) |
| どれかを満たす | 「または」だけを並べる(深さ0) |
| 絞ったうえで、どれか | 「かつ」の中に「または」(深さ1) |
3つ目がいちばん多く使う形です。これで深さ1なので、まだ1段の余裕があります。
組み立てるなら、上限を先に確かめます
自動で条件を作るなら、送る前に数を数えてください。
| 確かめること | 閾値 |
|---|---|
| 条件の数 | 0個なら止める。101個以上なら分ける |
| 入れ子の深さ | 3段以上になっていないか |
| 日付の期間 | 「今月」を使っていないか |
3つとも、送る前に手元で確かめられます。送ってから断られるより早いです。
画面でできることと、同じではありません
画面の絞り込みは、もっと自由に見えます。ただ、画面で作った設定は外からは見えません。
外から絞るときは、毎回この形で書くことになります。画面の設定を持ってくることはできません。
だから、外から使う条件は、外で書ける形かどうかを先に確かめてください。画面で作れたから外でもできる、とは限りません。
先に確かめる順番
| 順番 | 確かめること |
|---|---|
| 1 | その型に、使いたい条件があるか(セレクトの「含む」など) |
| 2 | 日付なら、「今月」を使っていないか |
| 3 | 入れ子が3段になっていないか |
| 4 | 条件の数が0個または101個以上になっていないか |
1と2は設計の段階で分かります。3と4は、動かしてから当たります。
先に1と2を確かめておけば、作り直しになる前に気づけます。
よくある質問(FAQ)
3段以上の条件を書きたいときは、どうしますか。
2段に収まる形に書き直すか、絞り込みを緩めに取って、残りを手元で絞ることになります。取ってから絞るぶんには、深さの制限はありません。
「今月」を使う方法は、本当にありませんか。
今回の範囲ではありませんでした。月初と月末を自分で計算して、日付で挟んでください。「今週」だけは用意されています。
条件を101個以上送りたいです。
100個ずつに分けて、何回かに分けて取ってください。結果をあとで合わせれば同じです。
セレクトで部分一致したいです。
できませんでした。選択肢の名前を全部書き出して「または」で並べるか、同じ内容を文字の列にも持たせてください。
ファイル名で絞りたいです。
ファイルの列では、入っているかどうかしか絞れません。ファイル名を文字の列にも入れておくと、そちらで絞れます。
画面で作った絞り込みを、外から使えますか。
使えません。画面の設定は外からは見えないので、同じ条件を書き直すことになります。
条件が0個なら、送らずに止めてください
空の絞り込みはエラーにならず、全件が返ります。そのあとに更新や削除をしていると、意図と正反対のことが起きます。深さは2段、幅は100個。どれも送る前に手元で確かめられます。