はじめに
NotionRubyMapping 解説の第79回目です。昨日の and に引き続き or を解説します。まず、以前使っていたデータベースを取得します。
irb(main):002> db = Database.find "https://www.notion.so/hkob/cad035c49e5346e78331cb5d05cbc754?v=a03e96ed79ad4d35808e7a08583396a0&pvs=4" => NotionRubyMapping::Database-cad035c49e5346e78331cb5d05cbc754
query_database のみ
まず何もフィルタをかけないデータベースの検索で件数が3件になることを確認します。
irb(main):003> db.query_database.count => 3
or
複数のフィルタ条件のどちらか満たすものを取り出すときには、filter_* を or で繋ぎます。同じプロパティを複数回使うときには、それを変数に入れておくといいです。
irb(main):004> dps = db.properties => PropertyCache irb(main):005> np = dps["Number"] => #<NotionRubyMapping::NumberProperty:0x0000000106b162d0 ... irb(main):006> db.query_database(np.filter_less_than(1).or(np.filter_greater_tha n(15))).count => 1
わかりにくいなと思ったら、先に query を別に作っておくと楽だと思います。
irb(main):007> query = np.filter_less_than(1).or(np.filter_greater_than(15)) => #<NotionRubyMapping::Query:0x000000010703c138 ... irb(main):008> query => #<NotionRubyMapping::Query:0x000000010703c138 @filter= {"or"=> [{"property"=>"Number", "number"=>{"less_than"=>1}}, {"property"=>"Number", "number"=>{"greater_than"=>15}}]}, @filter_properties=[], @page_size=100, @sort=[], @start_cursor=nil> irb(main):009> db.query_database(query).count => 1
おわりに
今日は、フィルタが同時に満たすときに満足する or を解説しました。
Query のマニュアルはこちらです。その他のマニュアルもここから見てください。