Command.push(values: Object): Command

数组更新操作符。对一个值为数组的字段,往数组添加一个或多个值。或字段原为空,则创建该字段并设数组为传入值。

返回值

Command

参数说明

position 说明

要求必须同时有 参数存在。

非负数代表从数组开始位置数的位置,从 0 开始计。如果数值大于等于数组长度,则视为在尾部添加。负数代表从数组尾部倒数的位置,比如 -1 就代表倒数第二个元素的位置。如果负数数值的绝对值大于等于数组长度,则视为从数组头部添加。

sort 说明

如果数组元素是记录,则用 { <字段>: 1 | -1 } 的格式表示根据记录中的什么字段做升降序排序。

slice** 说明

要求必须同时有 each 参数存在

说明
0将字段更新为空数组
正数数组只保留前 n 个元素
负数数组只保留后 n 个元素

以上定义是从小程序 2.8.3 / 云函数 SDK 1.2.1 起支持,对于之前的版本,使用的是如下函数签名,新版中对旧版签名有兼容。

示例 1:尾部添加元素

  1. const _ = db.command
  2. db.collection('todos').doc('doc-id').update({
  3. data: {
  4. }
  5. })

示例 2:从第二个位置开始插入

插入后对整个数组做排序

  1. const _ = db.command
  2. db.collection('todos').doc('doc-id').update({
  3. data: {
  4. tags: _.push({
  5. sort: 1,
  6. })
  7. }
  8. })

不插入,只对数组做排序

如果字段是对象数组,可以如下根据元素对象里的字段进行排序:

  1. const _ = db.command
  2. db.collection('todos').doc('doc-id').update({
  3. data: {
  4. tags: _.push({
  5. each: [
  6. { name: 'miniprogram', weight: 8 },
  7. ],
  8. sort: {
  9. },
  10. })
  11. }
  12. })

示例 4:截断保留

示例 5:在指定位置插入、然后排序、最后只保留前 2 个元素

  1. const _ = db.command
  2. db.collection('todos').doc('doc-id').update({
  3. data: {
  4. tags: _.push({
  5. each: ['mini-program', 'cloud'],
  6. position: 1,
  7. slice: 2,
  8. sort: 1,
  9. })