<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Cheat Sheet on SNow adventures</title>
    <link>https://www.snow-adventures.com/categories/cheat-sheet/</link>
    <description>Recent content in Cheat Sheet on SNow adventures</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <copyright>© Samuel Meylan - 2020</copyright>
    <lastBuildDate>Tue, 09 Jun 2020 00:00:00 +0000</lastBuildDate><atom:link href="https://www.snow-adventures.com/categories/cheat-sheet/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>GlideQuery Cheat Sheet</title>
      <link>https://www.snow-adventures.com/posts/glidequery-cheat-sheet/</link>
      <pubDate>Tue, 09 Jun 2020 00:00:00 +0000</pubDate>
      
      <guid>https://www.snow-adventures.com/posts/glidequery-cheat-sheet/</guid>
      <description>an attempt to document GlideQuery functions and methods</description>
      <content:encoded><![CDATA[<p>This is a draft Cheat Sheet for the <code>GlideQuery</code>. Please see this <a href="../overview-of-glidequery/">post</a> for a detailled introduction.</p>
<p>This cheat sheet was build with elements gathered from presentations and blog posts and also from reading the script include. It may not be accurate, might evolve and all comments and corrections are welcome !</p>
<h2 id="invoking-glidequery">invoking <code>GlideQuery</code></h2>
<p>In a similar way that <code>GlideRecord</code>, the table name is passed as a parameter:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kd">var</span> <span class="nx">myTable</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">GlideQuery</span><span class="p">(</span><span class="s1">&#39;table_name&#39;</span><span class="p">);</span>
</span></span></code></pre></div><h2 id="cheat-sheet">Cheat sheet</h2>
<h3 id="selections-insert-update">Selections, insert, update</h3>
<h4 id="get">get()</h4>
<p>Returns a single record by querying primary key <code>key</code>.</p>
<h5 id="parameters">Parameters</h5>
<table>
  <thead>
      <tr>
          <th>Type</th>
          <th>Name</th>
          <th>Description</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>String</td>
          <td>key</td>
          <td>(sys_id)</td>
      </tr>
      <tr>
          <td>Array</td>
          <td>selectedFields</td>
          <td>Additional fields to return in result</td>
      </tr>
  </tbody>
</table>
<h5 id="example">Example</h5>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kd">var</span> <span class="nx">user</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">GlideQuery</span><span class="p">(</span><span class="s1">&#39;sys_user&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">     <span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s1">&#39;5137153cc611227c000bbd1bd8cd2005&#39;</span><span class="p">,</span> <span class="p">[</span><span class="s1">&#39;first_name&#39;</span><span class="p">,</span> <span class="s1">&#39;last_name&#39;</span><span class="p">])</span>
</span></span><span class="line"><span class="cl">     <span class="p">.</span><span class="nx">orElse</span><span class="p">({</span> <span class="nx">first_name</span><span class="o">:</span> <span class="s1">&#39;Default&#39;</span><span class="p">,</span> <span class="nx">last_name</span><span class="o">:</span> <span class="s1">&#39;User&#39;</span> <span class="p">});</span>
</span></span></code></pre></div><hr>
<h4 id="getby">getBy()</h4>
<p>Returns a single record, using <code>keyValues</code> as a set of key-values to query by.
getBy assumes the &lsquo;=&rsquo; operator for each key-value.</p>
<h5 id="parameters-1">Parameters</h5>
<table>
  <thead>
      <tr>
          <th>Type</th>
          <th>Name</th>
          <th>Description</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Object</td>
          <td>keyValues</td>
          <td>Object where the keys are the name of the fields, and the values are the values.</td>
      </tr>
      <tr>
          <td>Array</td>
          <td>selectedFields</td>
          <td>Additional fields to return in result</td>
      </tr>
  </tbody>
</table>
<h5 id="example-1">Example</h5>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kd">var</span> <span class="nx">user</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">GlideQuery</span><span class="p">(</span><span class="s1">&#39;sys_user&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="p">.</span><span class="nx">getBy</span><span class="p">({</span>
</span></span><span class="line"><span class="cl">        <span class="nx">first_name</span><span class="o">:</span> <span class="s1">&#39;Fred&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="nx">last_name</span><span class="o">:</span> <span class="s1">&#39;Luddy&#39;</span>
</span></span><span class="line"><span class="cl">    <span class="p">},</span> <span class="p">[</span><span class="s1">&#39;first_name&#39;</span><span class="p">,</span> <span class="s1">&#39;last_name&#39;</span><span class="p">,</span> <span class="s1">&#39;city&#39;</span><span class="p">,</span> <span class="s1">&#39;active&#39;</span><span class="p">])</span> <span class="c1">// select first_name, last_name, city, active
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>    <span class="p">.</span><span class="nx">orElse</span><span class="p">({</span>
</span></span><span class="line"><span class="cl">         <span class="nx">first_name</span><span class="o">:</span> <span class="s1">&#39;Nobody&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="nx">last_name</span><span class="o">:</span> <span class="s1">&#39;Found&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="nx">city</span><span class="o">:</span> <span class="s1">&#39;Nowhere&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="nx">active</span><span class="o">:</span> <span class="kc">false</span>
</span></span><span class="line"><span class="cl">    <span class="p">});</span>
</span></span></code></pre></div><hr>
<h4 id="insert">insert()</h4>
<p>Inserts a single record</p>
<h5 id="parameters-2">Parameters</h5>
<table>
  <thead>
      <tr>
          <th>Type</th>
          <th>Name</th>
          <th>Description</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Object</td>
          <td>keyValues</td>
          <td>Object containing key-values to insert into table</td>
      </tr>
      <tr>
          <td>Array</td>
          <td>selectedFields</td>
          <td>Fields to return in result Optional</td>
      </tr>
  </tbody>
</table>
<h5 id="example-2">Example</h5>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="k">new</span> <span class="nx">GlideQuery</span><span class="p">(</span><span class="s1">&#39;sys_user&#39;</span><span class="p">)</span> 
</span></span><span class="line"><span class="cl">    <span class="p">.</span><span class="nx">insert</span><span class="p">({</span>
</span></span><span class="line"><span class="cl">         <span class="nx">active</span><span class="o">:</span> <span class="kc">true</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">         <span class="nx">name</span><span class="o">:</span> <span class="s1">&#39;Sam Meylan&#39;</span><span class="p">,</span> 
</span></span><span class="line"><span class="cl">        <span class="nx">city</span><span class="o">:</span> <span class="s1">&#39;Geneva&#39;</span> 
</span></span><span class="line"><span class="cl">    <span class="p">})</span> 
</span></span><span class="line"><span class="cl">    <span class="p">.</span><span class="nx">get</span><span class="p">();</span>
</span></span></code></pre></div><hr>
<h4 id="insertorupdate">insertOrUpdate()</h4>
<p>Updates an existing record (just like update), however instead of requiring
where calls, it uses the primary key(s) in the recordValues object passed
in. If the primary key(s) isn&rsquo;t there, insertOrUpdate will insert a new
record instead. Returns an Optional of the newly created/updated record.
Often useful when you want to want to ensure a record exists and has the
correct values, as you don&rsquo;t need to check for the record&rsquo;s existence beforehand.</p>
<h5 id="parameters-3">Parameters</h5>
<table>
  <thead>
      <tr>
          <th>Type</th>
          <th>Name</th>
          <th>Description</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Object</td>
          <td>changes</td>
          <td>Object containing key-values to update/insert into table</td>
      </tr>
      <tr>
          <td>Array</td>
          <td>selectedFields</td>
          <td>Fields to return in result Optional</td>
      </tr>
  </tbody>
</table>
<h5 id="example-3">Example</h5>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1">// insert a new record
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="kd">var</span> <span class="nx">user</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">GlideQuery</span><span class="p">(</span><span class="s1">&#39;sys_user&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="p">.</span><span class="nx">insertOrUpdate</span><span class="p">({</span>
</span></span><span class="line"><span class="cl">        <span class="nx">first_name</span><span class="o">:</span> <span class="s1">&#39;George&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="nx">last_name</span><span class="o">:</span> <span class="s1">&#39;Griffey&#39;</span>
</span></span><span class="line"><span class="cl">    <span class="p">})</span>
</span></span><span class="line"><span class="cl">    <span class="p">.</span><span class="nx">orElse</span><span class="p">(</span><span class="kc">null</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1">// update existing record
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="kd">var</span> <span class="nx">user</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">GlideQuery</span><span class="p">(</span><span class="s1">&#39;sys_user&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="p">.</span><span class="nx">insertOrUpdate</span><span class="p">({</span>
</span></span><span class="line"><span class="cl">        <span class="nx">sys_id</span><span class="o">:</span> <span class="s1">&#39;2d0efd6c73662300bb513198caf6a72e&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="nx">first_name</span><span class="o">:</span> <span class="s1">&#39;George&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="nx">last_name</span><span class="o">:</span> <span class="s1">&#39;Griffey&#39;</span> <span class="p">})</span>
</span></span><span class="line"><span class="cl">    <span class="p">.</span><span class="nx">orElse</span><span class="p">(</span><span class="kc">null</span><span class="p">);</span>
</span></span></code></pre></div><hr>
<h4 id="update">update()</h4>
<p>Updates an existing record. Requires a where call, specifying all existing primary keys (usually sys_id). Returns an Optional of the newly-updated record.</p>
<h5 id="parameters-4">Parameters</h5>
<table>
  <thead>
      <tr>
          <th>Type</th>
          <th>Name</th>
          <th>Description</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Object</td>
          <td>changes</td>
          <td>Object containing key-values to update/insert into table</td>
      </tr>
      <tr>
          <td>Array</td>
          <td>selectedFields</td>
          <td>Fields to return in result Optional</td>
      </tr>
  </tbody>
</table>
<h5 id="example-4">Example</h5>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="k">new</span> <span class="nx">GlideQuery</span><span class="p">(</span><span class="s1">&#39;sys_user&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="p">.</span><span class="nx">where</span><span class="p">(</span><span class="s1">&#39;sys_id&#39;</span><span class="p">,</span> <span class="nx">userId</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="p">.</span><span class="nx">update</span><span class="p">({</span> <span class="nx">city</span><span class="o">:</span> <span class="s1">&#39;Los Angeles&#39;</span> <span class="p">});</span>
</span></span></code></pre></div><hr>
<h4 id="updatemultiple">updateMultiple()</h4>
<p>Updates all records in the table (specified by preceding where clause with the values contained in the changes object. Returns # of records updated.</p>
<h5 id="parameters-5">Parameters</h5>
<table>
  <thead>
      <tr>
          <th>Type</th>
          <th>Name</th>
          <th>Description</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Object</td>
          <td>changes</td>
          <td>Object containing key-values to update/insert into table</td>
      </tr>
  </tbody>
</table>
<h5 id="example-5">Example</h5>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="k">new</span> <span class="nx">GlideQuery</span><span class="p">(</span><span class="s1">&#39;sys_user&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="p">.</span><span class="nx">where</span><span class="p">(</span><span class="s1">&#39;active&#39;</span><span class="p">,</span> <span class="kc">false</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="p">.</span><span class="nx">where</span><span class="p">(</span><span class="s1">&#39;last_name&#39;</span><span class="p">,</span> <span class="s1">&#39;Griffey&#39;</span><span class="p">)</span><span class="o">&lt;</span><span class="nx">r</span><span class="o">&gt;</span>    <span class="p">.</span><span class="nx">updateMultiple</span><span class="p">({</span> <span class="nx">active</span><span class="o">:</span> <span class="kc">true</span> <span class="p">});</span>
</span></span></code></pre></div><hr>
<h4 id="select">select()</h4>
<p>Specifies which fields to return and returns a Stream containing the results of the query. Note that records aren&rsquo;t actually read from the database until a terminal Stream method is called (such as reduce() or toArray()). The Stream is intended for reading multiple records in a similar fashion to Java&rsquo;s Stream class.</p>
<h5 id="parameters-6">Parameters</h5>
<table>
  <thead>
      <tr>
          <th>Type</th>
          <th>Name</th>
          <th>Description</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>&hellip;String</td>
          <td>fields</td>
          <td>Fields to select</td>
      </tr>
  </tbody>
</table>
<h5 id="example-6">Example</h5>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kd">var</span> <span class="nx">stream</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">GlideQuery</span><span class="p">(</span><span class="s1">&#39;sys_user&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="p">.</span><span class="nx">select</span><span class="p">(</span><span class="s1">&#39;first_name&#39;</span><span class="p">,</span> <span class="s1">&#39;last_name&#39;</span><span class="p">);</span>
</span></span></code></pre></div><hr>
<h4 id="selectone">selectOne()</h4>
<p>Similar to <code>select()</code>, however only returns an Optional which may contain a single record. This is more efficient than <code>select()</code> if you only need one record, or want to test if a record exists.</p>
<h5 id="parameters-7">Parameters</h5>
<table>
  <thead>
      <tr>
          <th>Type</th>
          <th>Name</th>
          <th>Description</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>&hellip;String</td>
          <td>fields</td>
          <td>Fields to select</td>
      </tr>
  </tbody>
</table>
<h5 id="example-7">Example</h5>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kd">var</span> <span class="nx">user</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">GlideQuery</span><span class="p">(</span><span class="s1">&#39;sys_user&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="p">.</span><span class="nx">where</span><span class="p">(</span><span class="s1">&#39;zip&#39;</span><span class="p">,</span> <span class="s1">&#39;12345&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="p">.</span><span class="nx">whereNotNull</span><span class="p">(</span><span class="s1">&#39;last_name&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="p">.</span><span class="nx">selectOne</span><span class="p">(</span><span class="s1">&#39;first_name&#39;</span><span class="p">,</span> <span class="s1">&#39;last_name&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="p">.</span><span class="nx">get</span><span class="p">();</span>
</span></span></code></pre></div><hr>
<h4 id="del">Del()</h4>
<p>Deletes all records in the table specified by preceding where clauses</p>
<h5 id="example-8">Example</h5>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="k">new</span> <span class="nx">GlideQuery</span><span class="p">(</span><span class="s1">&#39;sys_user&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="p">.</span><span class="nx">where</span><span class="p">(</span><span class="s1">&#39;active&#39;</span><span class="p">,</span> <span class="kc">true</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="p">.</span><span class="nx">where</span><span class="p">(</span><span class="s1">&#39;last_name&#39;</span><span class="p">,</span> <span class="s1">&#39;Jeter&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="p">.</span><span class="nx">del</span><span class="p">();</span>
</span></span></code></pre></div><h3 id="conditions">Conditions</h3>
<h4 id="where">where()</h4>
<p>Returns a new GlideQuery containing where clause</p>
<h5 id="parameters-8">Parameters</h5>
<table>
  <thead>
      <tr>
          <th>Type</th>
          <th>Name</th>
          <th>Description</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>String</td>
          <td>field</td>
          <td>Field related to the where clause</td>
      </tr>
  </tbody>
</table>
<h5 id="example-9">Example</h5>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="k">new</span> <span class="nx">GlideQuery</span><span class="p">(</span><span class="s1">&#39;sys_user&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="p">.</span><span class="nx">where</span><span class="p">(</span><span class="s1">&#39;active&#39;</span><span class="p">,</span> <span class="kc">true</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="p">.</span><span class="nx">where</span><span class="p">(</span><span class="s1">&#39;last_login&#39;</span><span class="p">,</span> <span class="s1">&#39;&gt;&#39;</span><span class="p">,</span> <span class="s1">&#39;2016-04-15&#39;</span><span class="p">);</span>
</span></span></code></pre></div><hr>
<h4 id="wherenotnull">whereNotNull()</h4>
<p>Returns a new GlideQuery containing NOT NULL clause</p>
<h5 id="parameters-9">Parameters</h5>
<table>
  <thead>
      <tr>
          <th>Type</th>
          <th>Name</th>
          <th>Description</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>String</td>
          <td>field</td>
          <td>Field related to the clause</td>
      </tr>
  </tbody>
</table>
<h5 id="example-10">Example</h5>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="k">new</span> <span class="nx">GlideQuery</span><span class="p">(</span><span class="s1">&#39;sys_user&#39;</span><span class="p">)</span> 
</span></span><span class="line"><span class="cl">    <span class="p">.</span><span class="nx">whereNotNull</span><span class="p">(</span><span class="s1">&#39;first_name&#39;</span><span class="p">)</span>
</span></span></code></pre></div><hr>
<h4 id="wherenull">whereNull()</h4>
<p>Returns a new GlideQuery containing WHERE NULL clause</p>
<h5 id="parameters-10">Parameters</h5>
<table>
  <thead>
      <tr>
          <th>Type</th>
          <th>Name</th>
          <th>Description</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>String</td>
          <td>field</td>
          <td>Field related to the clause</td>
      </tr>
  </tbody>
</table>
<h5 id="example-11">Example</h5>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="k">new</span> <span class="nx">GlideQuery</span><span class="p">(</span><span class="s1">&#39;sys_user&#39;</span><span class="p">)</span> 
</span></span><span class="line"><span class="cl">    <span class="p">.</span><span class="nx">whereNull</span><span class="p">(</span><span class="s1">&#39;first_name&#39;</span><span class="p">)</span>
</span></span></code></pre></div><h3 id="aggregations">Aggregations</h3>
<h4 id="avg">avg()</h4>
<p>Returns the aggregate average of a given numeric field</p>
<h5 id="parameters-11">Parameters</h5>
<table>
  <thead>
      <tr>
          <th>Type</th>
          <th>Name</th>
          <th>Description</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>String</td>
          <td>field</td>
          <td>Numeric field</td>
      </tr>
  </tbody>
</table>
<h5 id="example-12">Example</h5>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kd">var</span> <span class="nx">faults</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">GlideQuery</span><span class="p">(</span><span class="s1">&#39;cmdb_ci&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="p">.</span><span class="nx">avg</span><span class="p">(</span><span class="s1">&#39;fault_count&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="p">.</span><span class="nx">orElse</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
</span></span></code></pre></div><hr>
<h4 id="max">max()</h4>
<p>Returns the aggregate minimum of a given field</p>
<h5 id="parameters-12">Parameters</h5>
<table>
  <thead>
      <tr>
          <th>Type</th>
          <th>Name</th>
          <th>Description</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>String</td>
          <td>field</td>
          <td>field</td>
      </tr>
  </tbody>
</table>
<h5 id="example-13">Example</h5>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kd">var</span> <span class="nx">faults</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">GlideQuery</span><span class="p">(</span><span class="s1">&#39;cmdb_ci&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="p">.</span><span class="nx">max</span><span class="p">(</span><span class="s1">&#39;first_name&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="p">.</span><span class="nx">orElse</span><span class="p">(</span><span class="s1">&#39;&#39;</span><span class="p">);</span>
</span></span></code></pre></div><hr>
<h4 id="min">min()</h4>
<p>Returns the aggregate maximum of a given field</p>
<h5 id="parameters-13">Parameters</h5>
<table>
  <thead>
      <tr>
          <th>Type</th>
          <th>Name</th>
          <th>Description</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>String</td>
          <td>field</td>
          <td>field</td>
      </tr>
  </tbody>
</table>
<h5 id="example-14">Example</h5>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kd">var</span> <span class="nx">faults</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">GlideQuery</span><span class="p">(</span><span class="s1">&#39;cmdb_ci&#39;</span><span class="p">)</span>    
</span></span><span class="line"><span class="cl">	<span class="p">.</span><span class="nx">min</span><span class="p">(</span><span class="s1">&#39;sys_mod_count&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="p">.</span><span class="nx">orElse</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
</span></span></code></pre></div><hr>
<h4 id="sum">sum()</h4>
<p>Returns the aggregate sum of a given numeric field</p>
<h5 id="parameters-14">Parameters</h5>
<table>
  <thead>
      <tr>
          <th>Type</th>
          <th>Name</th>
          <th>Description</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>String</td>
          <td>field</td>
          <td>Numeric field</td>
      </tr>
  </tbody>
</table>
<h5 id="example-15">Example</h5>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kd">var</span> <span class="nx">totalFaults</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">GlideQuery</span><span class="p">(</span><span class="s1">&#39;cmdb_ci&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="p">.</span><span class="nx">sum</span><span class="p">(</span><span class="s1">&#39;fault_count&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="p">.</span><span class="nx">orElse</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
</span></span></code></pre></div><hr>
<h4 id="count">count()</h4>
<p>Returns the row count of records matching the query</p>
<h5 id="example-16">Example</h5>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kd">var</span> <span class="nx">userCount</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">GlideQuery</span><span class="p">(</span><span class="s1">&#39;sys_user&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="p">.</span><span class="nx">where</span><span class="p">(</span><span class="s1">&#39;active&#39;</span><span class="p">,</span> <span class="kc">true</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="p">.</span><span class="nx">count</span><span class="p">();</span>
</span></span></code></pre></div><hr>
<h4 id="groupby">groupBy()</h4>
<p>Groups query results. Used with <code>aggregate()</code></p>
<h5 id="example-17">Example</h5>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="k">new</span> <span class="nx">GlideQuery</span><span class="p">(</span><span class="s1">&#39;task&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="p">.</span><span class="nx">aggregate</span><span class="p">(</span><span class="s1">&#39;count&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="p">.</span><span class="nx">groupBy</span><span class="p">(</span><span class="s1">&#39;contact_type&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="p">.</span><span class="nx">select</span><span class="p">();</span>
</span></span></code></pre></div><hr>
<h4 id="aggregate">aggregate()</h4>
<p>Aggregates a field using an aggregate function. Used to buildqueries which aggregate against multiple fields and/or multipleaggregate functions. If you only need to aggregate against one field with one function, and you don&rsquo;t need to use groupBy(), then use one of the terminal functions instead:
<code>avg()</code>
<code>min()</code>
<code>max()</code>
<code>count()</code></p>
<h5 id="parameters-15">Parameters</h5>
<table>
  <thead>
      <tr>
          <th>Type</th>
          <th>Name</th>
          <th>Description</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>String</td>
          <td>aggregateType</td>
          <td>Aggregate type (&lsquo;sum&rsquo;, &lsquo;avg&rsquo;, &lsquo;min&rsquo;, &lsquo;max&rsquo;, or &lsquo;count&rsquo;)</td>
      </tr>
      <tr>
          <td>String</td>
          <td>field</td>
          <td>Field to aggregate</td>
      </tr>
  </tbody>
</table>
<h5 id="example-18">Example</h5>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="k">new</span> <span class="nx">GlideQuery</span><span class="p">(</span><span class="s1">&#39;task&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="p">.</span><span class="nx">aggregate</span><span class="p">(</span><span class="s1">&#39;avg&#39;</span><span class="p">,</span> <span class="s1">&#39;reassignment_count&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="p">.</span><span class="nx">groupBy</span><span class="p">(</span><span class="s1">&#39;contact_type&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="p">.</span><span class="nx">select</span><span class="p">();</span>
</span></span></code></pre></div><hr>
<h4 id="having">having()</h4>
<p>Filters aggregate groups. Used with <code>aggregate()</code> and <code>groupBy</code>.</p>
<h5 id="parameters-16">Parameters</h5>
<table>
  <thead>
      <tr>
          <th>Type</th>
          <th>Name</th>
          <th>Description</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>String</td>
          <td>aggregateType</td>
          <td>Aggregate type (&lsquo;sum&rsquo;, &lsquo;avg&rsquo;, &lsquo;min&rsquo;, &lsquo;max&rsquo;, or &lsquo;count&rsquo;)</td>
      </tr>
      <tr>
          <td>String</td>
          <td>field</td>
          <td>Field to aggregate</td>
      </tr>
      <tr>
          <td>String</td>
          <td>operator</td>
          <td>Only numeric operators allowed: &lsquo;&gt;&rsquo;, &lsquo;&lt;&rsquo;, &lsquo;&gt;=&rsquo;, &lsquo;&lt;=&rsquo;, &lsquo;=&rsquo;, and &lsquo;!=&rsquo;</td>
      </tr>
      <tr>
          <td>number</td>
          <td>value</td>
          <td></td>
      </tr>
  </tbody>
</table>
<h5 id="example-19">Example</h5>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="o">*</span> <span class="k">new</span> <span class="nx">GlideQuery</span><span class="p">(</span><span class="s1">&#39;task&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="p">.</span><span class="nx">where</span><span class="p">(</span><span class="s1">&#39;description&#39;</span><span class="p">,</span> <span class="nx">description</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="p">.</span><span class="nx">groupBy</span><span class="p">(</span><span class="s1">&#39;priority&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="p">.</span><span class="nx">aggregate</span><span class="p">(</span><span class="s1">&#39;sum&#39;</span><span class="p">,</span> <span class="s1">&#39;reassignment_count&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="p">.</span><span class="nx">having</span><span class="p">(</span><span class="s1">&#39;sum&#39;</span><span class="p">,</span> <span class="s1">&#39;reassignment_count&#39;</span><span class="p">,</span> <span class="s1">&#39;&gt;&#39;</span><span class="p">,</span> <span class="mi">4</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="p">.</span><span class="nx">select</span><span class="p">()</span>
</span></span></code></pre></div><h3 id="miscellanious">Miscellanious</h3>
<h4 id="disableautosysfields">disableAutoSysFields()</h4>
<p>Returns a GlideQuery which does not update sys fields such as sys_created_on, sys_updated_on, and sys_mod_count. This is the equivalent of using autoSysFields(false) with GlideRecord.</p>
<h5 id="example-20">Example</h5>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="k">new</span> <span class="nx">GlideQuery</span><span class="p">(</span><span class="s1">&#39;task&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="p">.</span><span class="nx">disableAutoSysFields</span><span class="p">()</span>
</span></span><span class="line"><span class="cl">    <span class="p">.</span><span class="nx">insert</span><span class="p">({</span> <span class="nx">description</span><span class="o">:</span> <span class="s1">&#39;example&#39;</span><span class="p">,</span> <span class="nx">priority</span><span class="o">:</span> <span class="mi">1</span> <span class="p">});</span>
</span></span></code></pre></div><hr>
<h4 id="forceupdate">forceUpdate()</h4>
<p>Returns a GlideQuery which forces an update even when no changes are made. Useful when you want to force a business rule to execute.</p>
<h5 id="example-21">Example</h5>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="k">new</span> <span class="nx">GlideQuery</span><span class="p">(</span><span class="s1">&#39;task&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="p">.</span><span class="nx">forceUpdate</span><span class="p">()</span>
</span></span><span class="line"><span class="cl">    <span class="p">.</span><span class="nx">where</span><span class="p">(</span><span class="s1">&#39;sys_id&#39;</span><span class="p">,</span> <span class="nx">taskId</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="p">.</span><span class="nx">update</span><span class="p">()</span>
</span></span></code></pre></div><hr>
<h4 id="orderby">orderBy()</h4>
<p>Returns a GlideQuery which specifies that the records should be returned in ascending order by a given field.</p>
<h5 id="example-22">Example</h5>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kd">var</span> <span class="nx">query</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">GlideQuery</span><span class="p">(</span><span class="s1">&#39;incident&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="p">.</span><span class="nx">orderBy</span><span class="p">(</span><span class="s1">&#39;number&#39;</span><span class="p">);</span>
</span></span></code></pre></div><hr>
<h4 id="orderbydesc">orderByDesc()</h4>
<p>Returns a GlideQuery which specifies that the records should be returned in descending order by a given field. Can be used with aggregate queries</p>
<h5 id="example-23">Example</h5>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kd">var</span> <span class="nx">query</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">GlideQuery</span><span class="p">(</span><span class="s1">&#39;incident&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="p">.</span><span class="nx">orderByDesc</span><span class="p">(</span><span class="s1">&#39;number&#39;</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"> <span class="k">new</span> <span class="nx">GlideQuery</span><span class="p">(</span><span class="s1">&#39;incident&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="p">.</span><span class="nx">aggregate</span><span class="p">(</span><span class="s1">&#39;sum&#39;</span><span class="p">,</span> <span class="s1">&#39;child_incidents&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="p">.</span><span class="nx">groupBy</span><span class="p">(</span><span class="s1">&#39;category&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="p">.</span><span class="nx">orderByDesc</span><span class="p">(</span><span class="s1">&#39;sum&#39;</span><span class="p">,</span> <span class="s1">&#39;child_incidents&#39;</span><span class="p">)</span>
</span></span></code></pre></div><hr>
<h4 id="limit">limit()</h4>
<p>Returns a GlideQuery which limits the number of records returned.</p>
<h5 id="parameters-17">Parameters</h5>
<table>
  <thead>
      <tr>
          <th>Type</th>
          <th>Name</th>
          <th>Description</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>[number</td>
          <td>limit max number of records to return</td>
          <td></td>
      </tr>
  </tbody>
</table>
<h5 id="example-24">Example</h5>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kd">var</span> <span class="nx">incidents</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">GlideQuery</span><span class="p">(</span><span class="s1">&#39;incident&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="p">.</span><span class="nx">limit</span><span class="p">(</span><span class="mi">20</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="p">.</span><span class="nx">select</span><span class="p">(</span><span class="s1">&#39;priority&#39;</span><span class="p">,</span> <span class="s1">&#39;description&#39;</span><span class="p">);</span>
</span></span></code></pre></div><hr>
<h4 id="withacls">withAcls()</h4>
<p>By default GlideQuery uses GlideRecord for database interactions. By calling withAcls() GlideQuery will use GlideRecordSecure, which honors ACLs.</p>
<h5 id="example-25">Example</h5>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kd">var</span> <span class="nx">users</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">GlideQuery</span><span class="p">(</span><span class="s1">&#39;sys_user&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="p">.</span><span class="nx">withAcls</span><span class="p">()</span>
</span></span><span class="line"><span class="cl">    <span class="p">.</span><span class="nx">limit</span><span class="p">(</span><span class="mi">20</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="p">.</span><span class="nx">orderByDesc</span><span class="p">(</span><span class="s1">&#39;first_name&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="p">.</span><span class="nx">select</span><span class="p">(</span><span class="s1">&#39;first_name&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="p">.</span><span class="nx">toArray</span><span class="p">(</span><span class="mi">100</span><span class="p">);</span>
</span></span></code></pre></div><hr>
]]></content:encoded>
    </item>
    
  </channel>
</rss>
