はじめに
NotionRubyMapping 解説の第78回目です。今日は体調が悪いので、軽く条件の and を解説します。まず、以前使っていたデータベースを取得します。
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
and
複数のフィルタ条件を同時に満たすものを取り出すときには、filter_* を and で繋ぎます。同じプロパティを複数回使うときには、それを変数に入れておくといいです。
irb(main):004> dps = db.properties => PropertyCache irb(main):005> np = dps["Number"] => #<NotionRubyMapping::NumberProperty:0x0000000106b162d0 ... irb(main):012> db.query_database(np.filter_greater_than(1).and(np.filter_less_than(15))).count => 1
わかりにくいなと思ったら、先に query を別に作っておくと楽だと思います。
query = np.filter_greater_than(1).and(np.filter_less_than(15)) => #<NotionRubyMapping::Query:0x000000011cd7c1d0 ... irb(main):014> query => #<NotionRubyMapping::Query:0x000000011cd7c1d0 @filter={"and"=>[{"property"=>"Number", "number"=>{"greater_than"=>1}}, {"property"=>"Number", "number"=>{"less_than"=>15}}]}, @filter_properties=[], @page_size=100, @sort=[], @start_cursor=nil> irb(main):015> db.query_database(query).count => 1
おわりに
今日は、フィルタが同時に満たすときに満足する and を解説しました。
Query のマニュアルはこちらです。その他のマニュアルもここから見てください。