MongoDB聚合运算符:$slice

ops/2024/10/11 13:28:49/

MongoDB聚合运算符:$slice

文章目录

  • MongoDB聚合运算符:$slice
    • 语法
      • 参数说明
    • 使用
    • 举例

$slice聚合运算符返回数组的子集。

语法

$slice有两种使用语法:

  1. 从数组的开头或结尾返回元素:

    { $slice: [ <array>, <n> ] }
    
  2. 从数组中的指定位置返回元素:

    { $slice: [ <array>, <position>, <n> ] }
    

参数说明

  • <array>:可以解析为数组的任何表达式。
  • <position>:可选参数,整数表达式。
    • 如果<position>为正,表示以数组首部作为起始位置,如果<position>大于元素数量,则$slice返回空数组。
    • 如果<position>为负,表示以数组尾部作为起始位置,如果<position>的绝对值大于元素数量,则起始位置为数组的首部。
  • <n>为可解析为正整数的表达式:
    • 如果为正,$slice返回数组中的前 n 个元素。如果指定了 <position>,则 $slice 返回从该位置开始的前 n 个元素。
    • 如果为负数,$slice 返回数组中的最后 n 个元素。如果指定了 <position>,则 n 不能为负数。

使用

举例结果
{ $slice: [ [ 1, 2, 3 ], 1, 1 ] }[ 2 ]
{ $slice: [ [ 1, 2, 3 ], -2 ] }[ 2, 3 ]
{ $slice: [ [ 1, 2, 3 ], 15, 2 ] }[ ]
{ $slice: [ [ 1, 2, 3 ], -15, 2 ] }[ 1, 2 ]

举例

users集合有下列文档:

{ "_id" : 1, "name" : "dave123", favorites: [ "chocolate", "cake", "butter", "apples" ] }
{ "_id" : 2, "name" : "li", favorites: [ "apples", "pudding", "pie" ] }
{ "_id" : 3, "name" : "ahn", favorites: [ "pears", "pecans", "chocolate", "cherries" ] }
{ "_id" : 4, "name" : "ty", favorites: [ "ice cream" ] }

下面的示例返回用户收藏夹favorites数组中的前三个元素:

db.users.aggregate([{ $project: { name: 1, threeFavorites: { $slice: [ "$favorites", 3 ] } } }
])

操作返回下面的结果:

{ "_id" : 1, "name" : "dave123", "threeFavorites" : [ "chocolate", "cake", "butter" ] }
{ "_id" : 2, "name" : "li", "threeFavorites" : [ "apples", "pudding", "pie" ] }
{ "_id" : 3, "name" : "ahn", "threeFavorites" : [ "pears", "pecans", "chocolate" ] }
{ "_id" : 4, "name" : "ty", "threeFavorites" : [ "ice cream" ] }

http://www.ppmy.cn/ops/26291.html

相关文章

CSS @keyframes 动画:颜色变化、背景旋转与放大缩小

在CSS中&#xff0c;keyframes 是一个强大的工具&#xff0c;它允许我们创建复杂的动画效果。今天&#xff0c;我们将一起探索如何使用 keyframes 来实现颜色变化、背景旋转以及放大缩小的动画效果。 动画会在 2 秒内循环播放&#xff0c;并在不同的时间点改变盒子的背景颜色和…

SQL中为什么不要使用1=1?

为什么会使用 11&#xff1f; 在动态构建SQL查询时&#xff0c;开发者可能会不确定最终需要哪些条件。这时候&#xff0c;他们就会使用“11”作为一个始终为真的条件&#xff0c;让接下来的所有条件都可以方便地用“AND”连接起来&#xff0c;就像是搭积木的时候先放一个基座&…

linux安装MySQL 8.0笔记

在Linux系统中安装MySQL 8.0的详细操作步骤如下&#xff1a; 1. 添加MySQL Yum Repository 首先&#xff0c;您需要添加MySQL的Yum仓库。这可以通过下载并安装一个RPM包来实现&#xff0c;该RPM包会将MySQL仓库添加到您的仓库列表中。 wget https://repo.mysql.com//mysql80-c…

前端项目学习记录2:sass的使用

1.安装sass pnpm i sass2.配置vite.config.ts import { defineConfig } from vite import vue from vitejs/plugin-vue import path from "path"; //引入svg需要用到的插件 import { createSvgIconsPlugin } from vite-plugin-svg-icons export default defineConf…

nacos(docker部署)+springboot集成

文章目录 说明零nacos容器部署初始化配置高级配置部分访问权限控制命名空间设置新建配置文件 springboot配置nacos添加依赖编写测试controller 说明 nacos容器部署采用1Panel运维面板&#xff0c;进行部署操作&#xff0c;简化操作注意提前安装好1Panel和配置完成docker镜像加…

Laravel5.4 反序列化

文章目录 0x01 环境搭建0x02 POP 链0x03 exp0x04 总结 前言&#xff1a;CC 链复现的头晕&#xff0c;还是从简单的 Laravel 开始吧。 laravel 版本&#xff1a;5.4 0x01 环境搭建 laravel安装包下载地址 安装后配置验证页面。在 /routes/web.php 文件中添加一条路由&#xf…

docker学习笔记3:VmWare CentOS7安装与静态ip配置

文章目录 一、安装CentOS71、下载centos镜像2、安装二、设置静态ip三、xshell连接centos本专栏的docker环境是在centos7里安装,因此首先需要会安装centos虚拟机。 本篇博客介绍如何在vm虚拟机里安装centos7。 一、安装CentOS7 1、下载centos镜像 推荐清华源,下载如下版本 …

本地构建编译Apache-Seatunnel2.3.5适配Web1.0.0运行实现Mysql-CDC示例

本地构建编译Apache-Seatunnel2.3.5适配Web1.0.0运行实现Mysql-CDC示例 文章目录 1.前言2.编译2.1版本说明2.2 seatunnel2.3.4-release分支配置2.3maven调优配置 3.web1.0.0适配3.1配置文件修改和新增文件3.2手动拷贝jar修改依赖3.3修改web不兼容的代码3.4 web编译打包 4.运行m…