Skip to main content

db.command.aggregate.cond

1. Operator Description

Function: Evaluates a Boolean expression and returns one of the two specified values.

Declaration:

Two forms

  1. cond({ if: <Boolean expression>, then: <true value>, else: <false value> })

  2. cond([ <Boolean expression>, <true value>, <false value> ])

Notes:

In both forms, the three parameters (if, then, else) are mandatory.

If the Boolean expression evaluates to true, $cond will return <true value>; otherwise it will return <false value>

2. Operator Parameters

FieldTypeRequiredDescription
-Object or <Array>[any]Requiredtwo forms (as described in the declaration)

3. Sample Code

Suppose the collection items contains the following records:

{ "_id": "0", "name": "item-a", "amount": 100 }
{ "_id": "1", "name": "item-b", "amount": 200 }
{ "_id": "2", "name": "item-c", "amount": 300 }

We can use cond to generate a new field discount based on the amount field:

// Sample code in the Cloud Function environment
const tcb = require("@cloudbase/node-sdk");
const app = tcb.init({
env: "xxx",
});

const db = app.database();
const $ = db.command.aggregate;

exports.main = async (event, context) => {
const res = await db
.collection("items")
.aggregate()
.project({
name: 1,
discount: $.cond({
if: $.gte(["$amount", 200]),
then: 0.7,
else: 0.9,
}),
})
.end();
console.log(res.data);
};

The output is as follows:

{ "_id": "0", "name": "item-a", "discount": 0.9 }
{ "_id": "1", "name": "item-b", "discount": 0.7 }
{ "_id": "2", "name": "item-c", "discount": 0.7 }