クエリーコレクション

Deeplからの自動翻訳

4D v16 R6には、コレクションを管理するための40以上のメソッドがあり、開発者としては、より簡単になってきています。コードがきれいになり、読みやすくなるだけでなく、記録的な速さで書くことができます。

今回のブログでは、この2つの新しいメソッドがどのように使われるかを見ていきます。 queryindicesを使うと、コレクションを簡単に操作したり、アイテムを取得したりすることができます。

この queryindicesメソッドは、従来の 4D クエリと同様に、コレクション内の項目を操作したり取得したりするために使用します。両者の動作はまったく同じで、唯一の違いは返される結果です。 queryは、クエリ引数で定義された検索条件に一致するすべてのオブジェクトを含むコレクションを返します。 indices はインデックスのコレクションを返します。

データベースの例:コレクションのクエリ

コレクションへの問い合わせには、2 種類の演算子を混ぜることができます。以下のコードサンプルは、何が可能でどのように進めばよいかを示しています。

クエリの書き方は?

最初の例

クエリを書くには、二通りの方法があります。

  • クエリを文字列で指定する。

$c:=Newcollection(New object("Id";128; "City"; "Paris"; "Weather";1))
$c.push(New object("Id";50; "City"; "New-York"; "Weather";-10))
$c.Push(New object("Id";50; "Ci
ty”; “New-York”; “Weather”) )$c.push(New object("Id";1792; "City"; "Tokyo"; "Weather";-5))
$c.push(New object("Id";2973; "City"; "Miami"; "Weather";15))

$col:=$c.query("Weather#0")
$col2:=$c.indices("Weather#0")

  • とか、プレースホルダーを使ったクエリもあります。このように、ダイナミッククエリを簡単に作成することができ、4Dが変数を変換してくれます。

$w:=$1
$col:=$c.query("Weather#:1";$w)
$col2:=$c.indices("Weather#:1";$w)

高度な例

先ほどの例は、単に構文を示しただけですが、明らかに4つの要素のコレクションから何かを見つけるには、ループで十分でした。メソッドの本当の強みは queryメソッドの本当の強みは、大量のデータを含むオブジェクトやコレクションから何かを見つける必要がある場合です。この queryメソッドは、データにアクセスするための非常に効率的な方法です。

以下の例では、管理者が今日行った操作の回数を簡単に調べることができるようになりました。

// Save the current log file to JSON and put it in a collection
LOG FILE TO JSON("c:\ExportLogs")
$txt :=Document to text("c:\ExportLogs ###JournalExport.json")
$col :=JSON Parse($txt)

// Count how many operations have been done by "Administrator"
$count :=$col.query("extraData.user_name=:1"; "Administrator")
といった具合です。length

比較演算子

比較演算子は、 ある式と別の式を比較するために使わ れます。比較の 結果は TRUEまたはFALSEになります。比較演算子は次のとおりです。

  • =
  • #
  • <
  • >
  • <=
  • >=

$col:=$c.query("Weather>0")
//$col=[{Id:128,City:Paris,Weather:1},{Id:2973,City:Miami,Weather:15}]
$col2:=$c.indices("Weather>0")
//$col2=[0,3]

論理演算子

論理演算子は、条件の妥当性をテストするために使用されます。比較演算子と同様に、TRUE または FALSE を返します。論理演算子は次のとおりです。

  • AND
  • OR

$col:=$c.query("Id>50 AND (Weather>10 OR Weather<0)")
//$col=[{Id:1792,City:Tokyo,Weather:-5},{Id:2973,City:Miami,Weather:15}]
$col2:=$c.indices("Id>50と(Weather>10またはWeather<0)")
//$col2=[2,3]となります。

Fabrice Mainguené
- Product Owner -Fabrice Mainguenéは、2016年11月に4D Programチームに参加しました。プロダクトオーナーとして、彼はユーザーストーリーを書き、それを機能仕様に変換する役割を担っています。CNAMでコンピュータサイエンスの学士号を取得した後、FabriceはWindev開発者として小さなソフトウェア出版社に入社しました。その後、彼は産業および貿易分野のさまざまな企業で、Windev および Web 開発者として、また新機能の技術アドバイザーとして働きました。