首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

$project聚合管道MongoDB中的$nin

在MongoDB中,$nin 是一个查询操作符,用于过滤掉数组中包含指定元素的文档

假设我们有一个名为 users 的集合,其中每个文档都有一个名为 hobbies 的数组字段。现在,我们想要找出那些没有 hobbies 数组中包含 "apple" 或 "orange" 的用户。

我们可以使用 $nin 操作符结合 $project 聚合管道来实现这个需求:

代码语言:javascript
复制
db.users.aggregate([
  {
    $project: {
      _id: 1,
      name: 1,
      hobbies: {
        $filter: {
          input: "$hobbies",
          as: "hobby",
          cond: { $nin: ["$$hobby", "apple", "orange"] }
        }
      }
    }
  }
])

在这个示例中,我们使用 $filter 表达式来遍历 hobbies 数组,并使用 $nin 操作符过滤掉包含 "apple" 和 "orange" 的元素。最后,我们只返回那些没有这些元素的文档。

注意:$nin 不能直接在 $project 阶段中使用,我们需要使用 $filter 表达式来实现这个需求。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【翻译】MongoDB指南聚合——聚合管道

MongoDB提供了三种执行聚合的方式:聚合管道,map-reduce方法和单一目的聚合操作。 聚合管道 MongoDB的聚合框架模型建立在数据处理管道这一概念的基础之上。...聚合管道的一些阶段可以在管道中出现多次。 MongoDB提供了可在mongo shell中执行的db.collection.aggregate()方法和聚合管道命令aggregate。...然而,在$project阶段使用这些累加器时,这些累加器不会保存它们的状态到文档中。 1.3 聚合管道行为 在MongoDB中聚合命令作用于一个集合,在逻辑上将整个集合传入聚合管道。...内存限制 2.6版本中变化 管道阶段对内存的限制为100MB。如果某一阶段使用的内存超过100MB,MongoDB 会抛出一个错误。...name : 1 } }   ]) Users集合中的所有文档都经过了管道,在管道中执行以下操作: $project操作符: 创建名为name的字段。

4K100

MongoDB-聚合操作$project

什么是聚合操作聚合操作就是通过一个方法完成一系列的操作在聚合操作中, 每一个操作我们称之为一个阶段聚合操作会将上一个阶段处理结果传给下一个阶段继续处理所有阶段都处理完毕会返回一个新的结果集给我们聚合操作格式....aggregate(, ): 定义每个阶段操作: 聚合操作额外配置聚合管道阶段可以利用,$project...对输入文档进行再次投影作用: 按照我们需要的格式生成结果集格式: {$project:{:}}好了介绍了这么多我们来看示例吧,首先添加测试数据如下:db.person.insert...来指示内嵌文档字段路径字段路径表达式示例$name$book.name注意点$project 修改的是结果集而不是原有的集合db.person.aggregate([ { $project...聚合操作中使用了原有文档不存在的字段, 那么会自动用 Null 来填充_id: 0 的含义就是说 _id 这个字段不展示,可以告诉它那些字段需要显示那些字段不需要显示db.person.aggregate

25200
  • MongoDB高级操作(管道聚合)

    一、 聚合aggregate 聚合(aggerate)主要用于计算数据,类似于SQL中的sum(),avg(),聚合aggregate是基于数据处理的聚合管道,每个文档通过一个由多个阶段(stage)...组成的管道,可以对每个阶段的管道进行分组、过滤等功能,然后经过一系列的处理,输出相应的结果。...方法:db.stu.aggergate({管道:{表达式}}),如图: 二、管道(grep) 在MongoDB中,文档处理完毕后,通过管道进行下一次处理,常用管道如下: $group:将集合中的文档分组...$limit:限制聚合管道返回的文档数。 $skip:跳过指定数量的文档,并返回余下的文档。 $unwind:将数组类型的字段进行拆分。 表达式 作用:处理输入文档并输出。...,是MongoDB的标准查询操作。

    3.3K11

    MongoDB 聚合管道(Aggregation Pipeline)

    为了回应用户对简单数据访问的需求,MongoDB2.2版本引入新的功能聚合框架(Aggregation Framework) ,它是数据聚合的一个新框架,其概念类似于数据处理的管道。...“$project”子句看起来也非常类似SQL或MongoDB中的某个概念(和SQL不同的是,它位于表达式尾端)。 接下来介绍的操作在MongoDB聚合框架中是独一无二的。...管道操作符 管道是由一个个功能节点组成的,这些节点用管道操作符来进行表示。聚合管道以一个集合中的所有文档作为开始,然后这些文档从一个操作节点 流向下一个节点 ,每个操作节点对文档做相应的操作。...先看一个管道聚合的例子: 管道操作符的种类: Name Description $project Reshapes a document stream....聚合管道使用 首先下载测试数据:http://media.mongodb.org/zips.json 并导入到数据库中。

    2.8K100

    【mongoDB查询进阶】聚合管道(一) -- 初识

    什么是聚合管道(aggregation pipeline) 英文文档中是aggregation pipeline,直译为聚合管道,它可以对数据文档进行变换和组合。...聚合管道是基于数据流概念,数据进入管道经过一个或多个stage,每个stage对数据进行操作(筛选,投射,分组,排序,限制或跳过)后输出最终结果。...管道操作符介绍 mongoDB中有许多操作符,在aggregate中每个stage可以使用的操作符叫做管道操作符,以下列举比较常用的管道操作符: 操作符 简述 $project 投射操作符,用于重构每一个文档的字段...,并获取指定的文档,类似于populate $count 统计操作符,用于统计文档的数量 小结 db.collection.aggregate([])是聚合管道查询使用的方法,参数是数组,每个数组元素就是一个...stage,stage中运用操作符对数据进行处理后再交由下一个stage,直到没有下个stage,就输出最终的结果,而数据的处理则是通过使用操作符,本文先简单介绍了一下有哪些常用的操作符,下一篇再详细说明

    1.2K30

    深入浅出:MongoDB聚合管道的技术详解

    一、聚合管道简介 聚合管道是MongoDB中用于数据聚合和处理的强大工具。它允许开发者通过一系列有序的阶段(Stages)对数据进行筛选、转换、分组和计算,从而生成符合需求的聚合结果。...在聚合管道中,每个阶段都使用特定的操作符来定义操作。...操作符(Operators) 操作符是定义在聚合管道阶段中的指令,它们告诉MongoDB如何处理数据。...通过合理地组合阶段和操作符,我们可以构建出满足各种数据分析需求的聚合管道,从而实现对MongoDB中数据的高效查询和分析。...执行聚合管道:将构建好的聚合管道作为参数传递给MongoDB的aggregate()方法,执行聚合操作。执行过程中,数据会按照定义的顺序流经每个阶段,每个阶段都会对数据进行相应的处理。

    53010

    MongoDB Compass聚合管道构建器新特性介绍

    作者:Grigori Melnik 译者:徐雷 构建MongoDB聚合管道从未如此简单,Mongodb大数据分析之道。 1 分析数据的最有效方式就是在它已经存储的位置再进行分析。...这就是为什么MongoDB内置的聚合框架的原因。 你用过吗? 如果用过,就会知道它是最强大的MongoDB工具之一。 如果没有,你就错过了这个强大的数据查询分析工具。...如果不熟悉操作符含义,点击旁边的信息图标,将直接看到相应的帮助信息。 在构建聚合管道时,我们可以轻松预览结果。 这样,结合重新排列和切换聚合阶段的功能,可以轻松排查聚合管道中的bug。...一切正常后,可以将聚合管道代码复制到剪贴板,或者保存在您的收藏夹列表中,以后重复使用! ? 3 使用Compass聚合管道构建器,数据分析体验爽上天。 为什么现在就试试呢?...下载最新的测试版Compass,点击下载最新测试版 请参阅Compass中聚合管道构建器的文档 请参阅聚合框架快速入门参考。 要学习聚合框架新技能,可以看MongoDB大学M121课 - 非常值得!

    1.8K20

    MongoDB Compass聚合管道构建器新特性介绍

    作者:Grigori Melnik 译者:徐雷 构建MongoDB聚合管道从未如此简单,Mongodb大数据分析之道。 1 分析数据的最有效方式就是在它已经存储的位置再进行分析。...这就是为什么MongoDB内置的聚合框架的原因。 你用过吗? 如果用过,就会知道它是最强大的MongoDB工具之一。 如果没有,你就错过了这个强大的数据查询分析工具。...如果不熟悉操作符含义,点击旁边的信息图标,将直接看到相应的帮助信息。 在构建聚合管道时,我们可以轻松预览结果。 这样,结合重新排列和切换聚合阶段的功能,可以轻松排查聚合管道中的bug。...一切正常后,可以将聚合管道代码复制到剪贴板,或者保存在您的收藏夹列表中,以后重复使用! ? 3 使用Compass聚合管道构建器,数据分析体验爽上天。 为什么现在就试试呢?...下载最新的测试版Compass,点击下载最新测试版 请参阅Compass中聚合管道构建器的文档 请参阅聚合框架快速入门参考。 要学习聚合框架新技能,可以看MongoDB大学M121课 - 非常值得!

    1.8K30

    【mongoDB查询进阶】聚合管道(二) -- 阶段操作符

    https://segmentfault.com/a/1190000010826809 什么是管道操作符(Aggregation Pipeline Operators) mongoDB有4类操作符用于文档的操作...操作符以$开头,分为查询操作符,更新操作符,管道操作符,查询修饰符4大类。其中管道操作符是用于聚合管道中的操作符。...: '$name' }, _id: 0 } } ]); 关于管道表达式:最简单的“$project”表达式是包含和排除字段(如: { name:...{ $avg: '$age' } 用于求平均年龄,$avg是求均值的操作符,$sum用于汇总, 都只能在$group中使用的累加器,mongoDB3.2以上版本则还可以在$project中使用,详细会在另外的篇章中阐述...: { _id: 0, } } ]) 总结 本文介绍了几个使用聚合管道查询时常用的管道操作符的用法,熟练地综合使用以上操作符可以对数据进行多样的处理,组合,统计,得出多样化的数据

    2.5K30

    mongodb11天之屠龙宝刀(八)聚合函数与管道:sql与mongodb聚合函数对比

    mongodb11天之屠龙宝刀(八)聚合函数与管道:sql与mongodb聚合函数对比 MongoDB 聚合 MongoDB中聚合(aggregate)主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果...管道的概念 管道在Unix和Linux中一般用于将当前命令的输出结果作为下一个命令的参数。 MongoDB的聚合管道将MongoDB文档在一个管道处理完毕后将结果传递给下一个管道处理。...管道操作是可以重复的。表达式:处理输入文档并输出。表达式是无状态的,只能用于计算当前聚合管道的文档,不能处理其它的文档。...limit:用来限制MongoDB聚合管道返回的文档数。 skip:在聚合管道中跳过指定数量的文档,并返回余下的文档。skip:在聚合管道中跳过指定数量的文档,并返回余下的文档。...skip:在聚合管道中跳过指定数量的文档,并返回余下的文档。 unwind:将文档中的某一个数组类型字段拆分成多条,每条包含数组中的一个值。 group:将集合中的文档分组,可用于统计结果。

    1.8K50

    mongodb11天之屠龙宝刀(八)聚合函数与管道:sql与mongodb聚合函数对比

    mongodb11天之屠龙宝刀(八)聚合函数与管道:sql与mongodb聚合函数对比 原文连接:直通车 MongoDB 聚合 MongoDB中聚合(aggregate)主要用于处理数据(诸如统计平均值...管道的概念 管道在Unix和Linux中一般用于将当前命令的输出结果作为下一个命令的参数。 MongoDB的聚合管道将MongoDB文档在一个管道处理完毕后将结果传递给下一个管道处理。...管道操作是可以重复的。表达式:处理输入文档并输出。表达式是无状态的,只能用于计算当前聚合管道的文档,不能处理其它的文档。...limit:用来限制MongoDB聚合管道返回的文档数。 skip:在聚合管道中跳过指定数量的文档,并返回余下的文档。skip:在聚合管道中跳过指定数量的文档,并返回余下的文档。...skip:在聚合管道中跳过指定数量的文档,并返回余下的文档。 unwind:将文档中的某一个数组类型字段拆分成多条,每条包含数组中的一个值。 group:将集合中的文档分组,可用于统计结果。

    1.7K10

    MongoDB中$type、索引、聚合

    MongoDB中$type、索引、聚合 1、$type 1.1 说明 1.2 使用 2、索引 2.1 说明 2.2 原理 2.3 操作 2.4 复合索引 3、聚合 3.1 说明 3.2 使用 3.3...常见聚合表达式 最近做的项目用到了MongoDB,所以大概学了下基本操作,写的不好还请见谅。...索引是特殊的数据结构,索引存储在一个易于遍历读取的数据集合中,索引是对数据库表中一列或多列的值进行排序的一种结构。 2.2 原理   从根本上说,MongoDB中的索引与其他数据库系统中的索引类似。...MongoDB在集合层面上定义了索引,并支持对MongoDB集合中的任何字段或文档的子字段进行索引。...3、聚合 3.1 说明   MongoDB 中聚合(aggregate)主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果。

    1.6K20

    【mongoDB查询进阶】聚合管道(三)--表达式操作符

    https://segmentfault.com/a/1190000010910985 管道操作符的分类 管道操作符可以分为三类: 阶段操作符(Stage Operators) 表达式操作符(Expression...Operators)--主要用于$project 累加器(Accumulators)--主要用于$group分组 表达式操作符(Expression Operators) 表达式操作符主要用于在管道中构建表达式时使用...,使用类似于函数那样需要参数,主要用于$project操作符中,用于构建表达式,使用方法一般如下: 方法1: { : [ , ... ]...字符串操作符(String Operators) 操作符 简述 $concat 连接操作符,将给定表达式中的字符串连接一起。...,表达式操作符主要作用于$project下,通过使用这些操作符可以对文档中的字面量进行处理并返回,进而返回更多有用的数据。

    95220

    在MongoDB中实现聚合函数

    但是在MongoDB中,需要通过MapReduce功能来实现聚合以及批处理,它跟SQL里用来实现聚合的GROUP BY从句比较类似。...下一节将描述关系数据库中SQL方式实现的聚合和相应的通过MongoDB提供的MapReduce实现的聚合。 为了讨论这个主题,我们考虑如下所示的Sales表,它以MongoDB中的反范式形式呈现。...我们提供了一个查询的样例集,这些查询使用聚合函数、过滤条件和分组从句,及其等效的MapReduce实现,即MongoDB实现SQL中GROUP BY的等效方式。...在这篇文章中,我们描述了安装MongoDB并使用MapReduce特性执行聚合函数的过程,也提供了简单SQL聚合的MapReduce示例实现。...在MongoDB中,更复杂的聚合函数也可以通过使用MapReduce功能实现。

    3.7K70

    MongoDB的聚合操作(二)

    $skip$skip操作用于跳过文档集合中指定数量的文档,并返回剩余的文档。该操作接受一个数字,表示要跳过的文档数量。...在完成聚合操作后,将会输出剩余的文档。$unwind$unwind操作用于将文档中的数组字段拆分为单个文档,每个文档包含一个数组元素。该操作接受一个字符串,表示要拆分的数组字段。...在完成聚合操作后,将会输出结果。$project$project操作用于修改输出的文档结构,包括添加、删除和重命名字段。该操作接受一个JSON对象,表示要修改的文档结构。...以下是使用$project操作修改文档结构的示例:db.collection('users').aggregate([ { $project: { _id: 0, name: 1, age: 1 }...在完成聚合操作后,将会输出结果。

    49020

    MongoDB的聚合操作(一)

    聚合管道MongoDB中的聚合操作使用聚合管道来处理文档集合。聚合管道是一个由多个聚合操作组成的有序列表,每个聚合操作都是一个处理步骤。...聚合管道中的每个聚合操作都将产生一个新的文档集合,并将其传递给下一个聚合操作。最后一个聚合操作将生成最终结果。$match$match操作用于筛选文档集合中满足指定条件的文档。...在完成聚合操作后,将会输出结果。$sort$sort操作用于对文档集合中的文档进行排序。该操作接受一个JSON对象,表示排序条件。...在完成聚合操作后,将会输出结果。$limit$limit操作用于限制文档集合中返回的文档数量。该操作接受一个数字,表示限制的文档数量。...在完成聚合操作后,将会输出结果。

    68631

    MongoDB 命令记录

    db.inventory.find( { "size.uom": "in" } ) 聚合查询 aggregate() 管道的概念 管道在Unix和Linux中一般用于将当前命令的输出结果作为下一个命令的参数...MongoDB的聚合管道将MongoDB文档在一个管道处理完毕后将结果传递给下一个管道处理。管道操作是可以重复的。 表达式:处理输入文档并输出。...表达式是无状态的,只能用于计算当前聚合管道的文档,不能处理其它的文档。 这里我们介绍一下聚合框架中常用的几个操作: $project:修改输入文档的结构。...match:用于过滤数据,只输出符合条件的文档。​match使用MongoDB的标准查询操作。 $limit:用来限制MongoDB聚合管道返回的文档数。...$skip:在聚合管道中跳过指定数量的文档,并返回余下的文档。 $unwind:将文档中的某一个数组类型字段拆分成多条,每条包含数组中的一个值。 $group:将集合中的文档分组,可用于统计结果。

    36300

    MongoDB 聚合怎么写,更复杂的聚合案例

    上期我们针对MongoDB的聚合操作进行了一个实例的操作并且发现了与传统数据库在操作和索引方面的有意思的不同。...(上期:MongoDB 挑战传统数据库聚合查询,干不死他们的) mongo7 [direct: primary] test> show collections; test mongo7 [direct...下面我们要通过几个案例来说明,到底聚合该怎么去撰写,与传统的数据库有多大的不同。问题1 :以上数据中,针对洲名相同城市名相同,重复出现的次数,这些重复出现的次数的总和是多少?...,有一些写法,的确无法直接翻译成SQL语句,或者SQL语句通过简单的写法无法直接表达,并且我们也应该熟知,在mongodb的数据处理中,也可以通过分部的方式来处理,比如,不一次这对以state 为完全分组的方式来统计...结论,Mongodb的查询语句要比SQL语句更灵活,方案更多,优化的点更多,非常适合程序员来通过Mongodb 来继续数据的统计分析。

    12910

    Python | Python交互之mongoDB交互详解

    前言 本篇为mongodb篇,包含实例演示,mongodb高级查询,mongodb聚合管道,python交互等内容。...范围运算符 使用$in与$nin判断是否在某一范围内 举个栗子: #查询年龄为18、28的数据 db.xianyu.find({age:{$in:[]18,28}}) mongodb使用正则表达式 使用...('去重字段',{条件}) 举个栗子: #去除家乡相同,且年龄大于18的数据 db.xianyu.distinct('hometown',{age:{$gt:18}}) mongodb管道与聚合 聚合...(aggregate)是基于数据处理的聚合管道,每个文档通过一个由多个阶段(stage)组成的管道,可以对每个阶段的管道进行分组、过滤等功能,然后经过一系列的处理,输出相应的结果。...用法:db.集合名称.aggregate({管道:{表达式}}) 常用管道: $group: 将集合中的文档分组, 可用于统计结果 $match: 过滤数据, 只输出符合条件的文档 $project:

    8K30
    领券