SDK數(shù)據(jù)庫 Command·查詢·表達(dá)式操作符

2022-05-12 16:54 更新

Command.expr(aggregateExpression: Expression): Command

支持端:云函數(shù) 1.4.0

查詢操作符,用于在查詢語句中使用聚合表達(dá)式,方法接收一個參數(shù),該參數(shù)必須為聚合表達(dá)式

參數(shù)

aggregateExpression: Expression

要添加進(jìn)數(shù)組的一個或多個元素

返回值

Command

使用說明

  1. expr 可用于在聚合 match 流水線階段中引入聚合表達(dá)式
  2. 如果聚合 match 階段是在 lookup 階段內(nèi),此時的 expr 表達(dá)式內(nèi)可使用 lookup 中使用 let 參數(shù)定義的變量,具體示例可見 lookup 的 指定多個連接條件 例子
  3. expr 可用在普通查詢語句(where)中引入聚合表達(dá)式

示例代碼 1:比較同一個記錄中的兩個字段

假設(shè) items 集合的數(shù)據(jù)結(jié)構(gòu)如下:

{
  "_id": string,
  "inStock": number, // 庫存量
  "ordered": number  // 被訂量
}

找出被訂量大于庫存量的記錄:

const _ = db.command
const $ = _.aggregate
db.collection('items').where(_.expr($.gt('$ordered', '$inStock'))).get()

示例代碼 2:與條件語句組合使用

假設(shè) items 集合的數(shù)據(jù)結(jié)構(gòu)如下:

{
  "_id": string,
  "price": number
}

假設(shè)加個小于等于 10 的打 8 折,大于 10 的打 5 折,讓數(shù)據(jù)庫查詢返回打折后價格小于等于 8 的記錄:

const _ = db.command
const $ = _.aggregate
db.collection('items').where(_.expr(
  $.lt(
    $.cond({
      if: $.gte('$price', 10),
      then: $.multiply(['$price', '0.5']),
      else: $.multiply(['$price', '0.8']),
    })
    ,
    8
  )
).get()


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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號