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

2022-05-12 17:05 更新

AggregateCommand.let(value: any): Object

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

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

參數(shù)

value: any

返回值

Object

API 說明

let 的語法如下:

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

vars 中可以定義多個變量,變量的值由 變量表達式 計算而來,并且被定義的變量只有在 in 中的 結(jié)果表達式 才可以訪問。

在 in 的結(jié)果表達式中訪問自定義變量時候,請在變量名前加上雙美元符號( $$ )并用引號括起來。

示例代碼

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

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

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

代碼如下:

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)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號