SDK數(shù)據(jù)庫(kù) Command·聚合操作符·變量操作符

2022-05-12 17:05 更新

AggregateCommand.let(value: any): Object

支持端:小程序 2.7.4, 云函數(shù) 0.8.1, Web

聚合操作符。自定義變量,并且在指定表達(dá)式中使用,返回的結(jié)果是表達(dá)式的結(jié)果。

參數(shù)

value: any

返回值

Object

API 說(shuō)明

let 的語(yǔ)法如下:

db.command.aggregate.let({
  vars: {
    <變量1>: <變量表達(dá)式>,
    <變量2>: <變量表達(dá)式>,
    ...
  },
  in: <結(jié)果表達(dá)式>
})

vars 中可以定義多個(gè)變量,變量的值由 變量表達(dá)式 計(jì)算而來(lái),并且被定義的變量只有在 in 中的 結(jié)果表達(dá)式 才可以訪問(wèn)。

在 in 的結(jié)果表達(dá)式中訪問(wèn)自定義變量時(shí)候,請(qǐng)?jiān)谧兞棵凹由想p美元符號(hào)( $$ )并用引號(hào)括起來(lái)。

示例代碼

假設(shè)代表商品的集合 goods 的記錄如下:price 代表商品價(jià)格,discount 代表商品折扣率,cost 代表商品成本

{ "cost": -10, "discount": 0.95, "price": 100 }
{ "cost": -15, "discount": 0.98, "price": 1 }
{ "cost": -10, "discount": 1, "price": 10 }

借助 let 可以定義并計(jì)算每件商品實(shí)際的銷售價(jià)格,并將其賦值給自定義變量 priceTotal。最后再將 priceTotal 與 cost 進(jìn)行取和( sum )運(yùn)算,得到每件商品的利潤(rùn)。

代碼如下:

const $ = db.command.aggregate
db
  .collection('goods')
  .aggregate()
  .project({
    profit: $.let({
      vars: {
        priceTotal: $.multiply(['$price', '$discount'])
      },
      in: $.sum(['$$priceTotal', '$cost'])
    })
  })
  .end()

返回的數(shù)據(jù)結(jié)果如下:

{ "profit": 85 }
{ "profit": -14.02 }
{ "profit": 0 }


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)