codecamp

SDK数据库 Aggregate·指定根节点

Aggregate.replaceRoot(object:Object): Aggregate

支持端:小程序 2.7.4, 云函数 0.8.1, Web

聚合阶段。指定一个已有字段作为输出的根节点,也可以指定一个计算出的新字段作为根节点。

参数

object: Object

返回值

Aggregate

API 说明

replaceRoot 使用形式如下:

replaceRoot({
    newRoot: <表达式>
})

表达式格式如下:

格式说明
<字段名>指定一个已有字段作为输出的根节点(如果字段不存在则报错
<对象>计算一个新字段,并且把这个新字段作为根节点

示例

使用已有字段作为根节点

假设我们有一个 schools 集合,内容如下:

{
  "_id": 1,
  "name": "SFLS",
  "teachers": {
    "chinese": 22,
    "math": 18,
    "english": 21,
    "other": 123
  }
}

下面的代码使用 replaceRoot,把 teachers 字段作为根节点输出:

db.collection('schools')
  .aggregate()
  .replaceRoot({
    newRoot: '$teachers'
  })
  .end()

输出如下:

{
  "chinese": 22,
  "math": 18,
  "english": 21,
  "other": 123
}

使用计算出的新字段作为根节点

假设我们有一个 roles 集合,内容如下:

{ "_id": 1, "first_name": "四郎", "last_name": "黄" }
{ "_id": 2, "first_name": "邦德", "last_name": "马" }
{ "_id": 3, "first_name": "牧之", "last_name": "张" }

下面的代码使用 replaceRoot,把 first_name 和 last_name 拼在一起:

const { concat } = db.command.aggregate
db.collection('roles')
  .aggregate()
  .replaceRoot({
    newRoot: {
      full_name: concat(['$last_name', '$first_name'])
    }
  })
  .end()

输出如下:

{ "full_name": "黄四郎" }
{ "full_name": "马邦德" }
{ "full_name": "张牧之" }


SDK数据库 Aggregate·传递字段
SDK数据库 Aggregate·随机选定记录
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

微信小程序 指南

目录结构

开放能力

微信小程序 调试

微信小程序 实时日志

微信小程序 小程序测速

微信小程序 基础组件

微信小程序 API

媒体

界面

微信小程序API 绘图

微信小程序 服务端

接口调用凭证

统一服务消息

微信小程序 服务市场

微信小程序 生物认证

微信小程序 云开发

服务端

微信小程序云开发服务端API 数据库

SDK文档

微信小程序 扩展能力

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }