◷ Reading Time: 4 minutes
What Is Monad?
Please have a look at our Monad page.
Sample Model
All of the following monad samples are based on this model:

Restriction Operators
Both |where and |filter are the same operators.
Sample 1
Filter a list of items where order quantity is greater or equal to 2
order.Items |where (i, i.Quantity >= 2)
Sample 2
List of order’s item that the product is ‘S-HDD-512’ (Hard drive order’s line item)
order.Items
|filter (line,
(line.Product != null) and
(line.Product.Code == 'S-HDD-512')
)Sample 3
Zero quantity order line across stores
store.Orders
|filter (o,
o.Items |where (i, i.Quantity==0)
|any()
)Sample 4
Zero quantity order line across stores (optimised version). Combine, |where and |any into one |any
store.Orders
|filter (o,
o.Items |any (i, i.Quantity==0)
)Existence
Checking if specific values exist in a list can be done by using |any or |all operator
Sample 1
Check if list of products has any item
products|any()
Sample 2
Check if list of products has any item with Name of Apple.
products|any(x,x.Name==='Apple')
Sample 3
Check if list of products has any of Apple or Orange
products|any(p,['Apple','Mango']|any(y,p.Product===y))
Projection
Select
Sample 1
Selecting all line items products in an order
order.Items
|select (i, i.Product) Sample 2
Selecting all line items products’ ‘Code’ in an order
order.Items
|select (i, i.Product.Code) Sample 3
Selecting all line items products’ ‘Id’ and ‘Code’ in an order (named based projection)
order.Items
|select (i, i.Product.Id, i.Product.Code)Sample 4
Selecting all line items products’ ‘Id’ and ‘Code’ in an order (unnamed based projection)
order.Items
|select (i, tuple(i.Product.Id, i.Product.Code))Sample 5
Selecting unique products code
order.Items
|select (i, i.Product.Code)
|distinct ()Sample 6
Selecting all line items products’ ‘Id’ and ‘Code’ in an order (named based projection). In this example we specify a new name for each selected attribute.
order.Items
|select (i, Id: i.Product.Id, PCode: i.Product.Code)SelectMany
Sample 1
Selecting all ordered products across all stores
store.Orders
|selectMany (o, o.Items)Sample 2
Selecting all orders’ line items along with orders’ id (parent id)
store.Orders
|selectMany(o, o.Items
|select(i, tuple(o.Id, i))
)Monadic Operations Reference
See Expressions for more information and API reference to monad operators (pipes).