W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
支持端:小程序 2.7.4, 云函數(shù) 0.8.1, Web
聚合操作符。計(jì)算布爾表達(dá)式,返回指定的兩個(gè)值其中之一。
cond 的使用形式如下:
cond({ if: <布爾表達(dá)式>, then: <真值>, else: <假值> })
或者:
cond([ <布爾表達(dá)式>, <真值>, <假值> ])
兩種形式中,三個(gè)參數(shù)(if、then、else)都是必須的。
如果布爾表達(dá)式為真,那么 $cond 將會(huì)返回 <真值>,否則會(huì)返回 <假值>
假設(shè)集合 items 的記錄如下:
{ "_id": "0", "name": "item-a", "amount": 100 }
{ "_id": "1", "name": "item-b", "amount": 200 }
{ "_id": "2", "name": "item-c", "amount": 300 }
我們可以使用 cond,根據(jù) amount 字段,來生成新的字段 discount:
const $ = db.command.aggregate
db.collection('items').aggregate()
.project({
name: 1,
discount: $.cond({
if: $.gte(['$amount', 200]),
then: 0.7,
else: 0.9
})
})
.end()
輸出如下:
{ "_id": "0", "name": "item-a", "discount": 0.9 }
{ "_id": "1", "name": "item-b", "discount": 0.7 }
{ "_id": "2", "name": "item-c", "discount": 0.7 }
支持端:小程序 2.7.4, 云函數(shù) 0.8.1, Web
聚合操作符。計(jì)算給定的表達(dá)式,如果表達(dá)式結(jié)果為 null、undefined 或者不存在,那么返回一個(gè)替代值;否則返回原值。
[ <表達(dá)式>, <替代值> ]
ifNull 的使用形式如下:
ifNull([ <表達(dá)式>, <替代值> ])
假設(shè)集合 items 的記錄如下:
{ "_id": "0", "name": "A", "description": "這是商品A" }
{ "_id": "1", "name": "B", "description": null }
{ "_id": "2", "name": "C" }
我們可以使用 ifNull,對(duì)不存在 desc 字段的文檔,或者 desc 字段為 null 的文檔,補(bǔ)充一個(gè)替代值。
const $ = db.command.aggregate
db.collection('items').aggregate()
.project({
_id: 0,
name: 1,
description: $.ifNull(['$description', '商品描述空缺'])
})
.end()
輸出如下:
{ "name": "A", "description": "這是商品A" }
{ "name": "B", "description": "商品描述空缺" }
{ "name": "C", "description": "商品描述空缺" }
支持端:小程序 2.7.4, 云函數(shù) 0.8.1, Web
聚合操作符。根據(jù)給定的 switch-case-default 計(jì)算返回值、
switch 的使用形式如下:
switch({
branches: [
case: <表達(dá)式>, then: <表達(dá)式>,
case: <表達(dá)式>, then: <表達(dá)式>,
...
],
default: <表達(dá)式>
})
假設(shè)集合 items 的記錄如下:
{ "_id": "0", "name": "item-a", "amount": 100 }
{ "_id": "1", "name": "item-b", "amount": 200 }
{ "_id": "2", "name": "item-c", "amount": 300 }
我們可以使用 switch,根據(jù) amount 字段,來生成新的字段 discount:
const $ = db.command.aggregate
db.collection('items').aggregate()
.project({
name: 1,
discount: $.switch({
branches: [
{ case: $.gt(['$amount', 250]), then: 0.8 },
{ case: $.gt(['$amount', 150]), then: 0.9 }
],
default: 1
})
})
.end()
輸出如下:
{ "_id": "0", "name": "item-a", "discount": 1 }
{ "_id": "1", "name": "item-b", "discount": 0.9 }
{ "_id": "2", "name": "item-c", "discount": 0.8 }
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: