当前位置: 首页 > news >正文

mongo常用操作符及查询例子

比较操作符:
$eq:匹配字段值等于指定值。
$ne:匹配字段值不等于指定值。
$gt:匹配字段值大于指定值。
$gte:匹配字段值大于或等于指定值。
$lt:匹配字段值小于指定值。
$lte:匹配字段值小于或等于指定值.

逻辑操作符:
$and:匹配多个条件都满足的文档。
$or:匹配多个条件中至少一个满足的文档。
$not:匹配不满足条件的文档。
$nor:匹配多个条件都不满足的文档。

元素操作符:
$exists:匹配包含指定字段的文档。
$type:匹配指定数据类型的字段。

数组操作符:
$in:匹配数组字段中包含指定值的文档。
$nin:匹配数组字段中不包含指定值的文档。
$all:匹配数组字段中包含所有指定值的文档。
$size:匹配数组字段长度等于指定值的文档。

正则表达式操作符
$regex:匹配字段值符合指定正则表达式的文档。

文本搜索操作符:
$text:执行全文本搜索。
$meta:获取文本搜索得分。

元素更新操作符:
$set:设置字段的值。
$unset:删除字段。
$inc:递增字段的值。
$push:向数组字段添加元素。
$addToSet:向数组字段添加不重复的元素。
$pull:从数组字段中删除元素。

查询修改操作符:
$find:指定查询条件。
$update:指定更新的字段和值。
$sort:指定排序方式。
$limit:限制结果集的大小。
$skip:跳过指定数量的文档。

以下是一些常见类别的 MongoDB 查询操作符及其示例:

  1. 比较操作符:

    • $eq:匹配字段值等于指定值。

      db.collection.find({ age: { $eq: 25 } })
      
    • $ne:匹配字段值不等于指定值。

      db.collection.find({ status: { $ne: "inactive" } })
      
    • $gt:匹配字段值大于指定值。

      db.collection.find({ score: { $gt: 90 } })
      
    • $gte:匹配字段值大于或等于指定值。

      db.collection.find({ score: { $gte: 85 } })
      
    • $lt:匹配字段值小于指定值.

      db.collection.find({ price: { $lt: 100 } })
      
    • $lte:匹配字段值小于或等于指定值.

      db.collection.find({ age: { $lte: 30 } })
      
  2. 逻辑操作符:

    • $and:匹配多个条件都满足的文档。

      db.collection.find({ $and: [ { age: 25 }, { status: "active" } ] })
      
    • $or:匹配多个条件中至少一个满足的文档。

      db.collection.find({ $or: [ { role: "admin" }, { role: "manager" } ] })
      
    • $not:匹配不满足条件的文档。

      db.collection.find({ $not: { age: { $lt: 18 } } })
      
    • $nor:匹配多个条件都不满足的文档。

      db.collection.find({ $nor: [ { status: "inactive" }, { age: { $lt: 18 } } ] })
      
  3. 数组操作符:

    • $in:匹配数组字段中包含指定值的文档。

      db.collection.find({ tags: { $in: ["mongodb", "database"] } })
      
    • $nin:匹配数组字段中不包含指定值的文档。

      db.collection.find({ categories: { $nin: ["technology", "programming"] } })
      
    • $all:匹配数组字段中包含所有指定值的文档。

      db.collection.find({ ingredients: { $all: ["flour", "sugar"] } })
      
    • $size:匹配数组字段长度等于指定值的文档。

      db.collection.find({ tags: { $size: 3 } })
      

继续介绍一些 MongoDB 查询操作符的示例:

  1. 元素操作符:

    • $exists:匹配包含指定字段的文档。

      db.collection.find({ field_name: { $exists: true } })
      
    • $type:匹配指定数据类型的字段。

      db.collection.find({ field_name: { $type: "string" } })
      
  2. 正则表达式操作符:

    • $regex:匹配字段值符合指定正则表达式的文档。

      db.collection.find({ title: { $regex: /pattern/i } })
      
  3. 文本搜索操作符:

    • $text:执行全文本搜索。

      db.collection.find({ $text: { $search: "search term" } })
      
    • $meta:获取文本搜索得分。

      db.collection.find({ $text: { $search: "search term" } }, { score: { $meta: "textScore" } })
      
  4. 元素更新操作符:

    • $set:设置字段的值。

      db.collection.update({ _id: ObjectId("document_id") }, { $set: { field_name: new_value } })
      
    • $unset:删除字段。

      db.collection.update({ _id: ObjectId("document_id") }, { $unset: { field_name: 1 } })
      
    • $inc:递增字段的值。

      db.collection.update({ _id: ObjectId("document_id") }, { $inc: { quantity: 1 } })
      
    • $push:向数组字段添加元素。

      db.collection.update({ _id: ObjectId("document_id") }, { $push: { tags: "new_tag" } })
      
    • $addToSet:向数组字段添加不重复的元素。

      db.collection.update({ _id: ObjectId("document_id") }, { $addToSet: { unique_values: "new_value" } })
      
    • $pull:从数组字段中删除元素。

      db.collection.update({ _id: ObjectId("document_id") }, { $pull: { tags: "unwanted_tag" } })
      
  5. 查询修改操作符:

    • $find:指定查询条件。

      db.collection.find({ field_name: "value" })
      
    • $update:指定更新的字段和值。

      db.collection.update({ field_name: "value" }, { $set: { new_field: "new_value" } })
      
    • $sort:指定排序方式。

      db.collection.find().sort({ field_name: 1 }) // 升序
      
    • $limit:限制结果集的大小。

      db.collection.find().limit(10) // 限制为前10条文档
      
    • $skip:跳过指定数量的文档。

      db.collection.find().skip(10) // 跳过前10条文档

相关文章:

mongo常用操作符及查询例子

比较操作符: $eq:匹配字段值等于指定值。 $ne:匹配字段值不等于指定值。 $gt:匹配字段值大于指定值。 $gte:匹配字段值大于或等于指定值。 $lt:匹配字段值小于指定值。 $lte:匹配字段值小于或等…...

41.排序练习题(王道2023数据结构第8章综合练习)

试题1(王道8.3.3节综合练习2): 编写双向冒泡排序算法,在正反两个方向交替扫描。即第一趟把关键字最大的元素放在序列的最后面,第二趟把关键字最小的元素放在序列最前面,如此反复。 首先实现冒泡排序&…...

python爬虫,如何在代理的IP被封后立刻换下一个IP继续任务?

前言 在实际的爬虫应用中,爬虫程序经常会通过代理服务器来进行网络访问,以避免访问过于频繁而受到网站服务器的限制。但是,代理服务器的IP地址也可能被目标网站限制,导致无法正常访问。这时候,我们需要在代理IP被封后…...

小程序开发——小程序项目的配置与生命周期

1.app.json配置属性 app.json配置属性 2.页面配置 app的页面配置指的是pages属性, pages数组的第一个页面将默认作为小程序的启动页。利用开发工具新建页面时,则pages属性对应的数组将自动添加该页面的路径,若是在硬盘中添加文件的形式则不…...

C语言之用指针交换两个数

1.指针存放是是地址,所以在用指针交换两个数的时候,需要对指针进行解引用(*p)。 用指针交换两个数,需要知道p1p2与*p1*p2。 p1p1是将p2的值赋值给p1. *p1*p2是将p2指针地址存放的值,赋值给p1指针地址存放的值,即p1地…...

Day 48 动态规划 part14

Day 48 动态规划 part14 解题理解1143103553 3道题目 1143. 最长公共子序列 1035. 不相交的线 53. 最大子数组和 解题理解 1143 设dp[i][j]为text10: i-1text20: j-1的最长公共子序列。 class Solution:def longestCommonSubsequence(self, text1: str, text2: str) -> …...

目标检测与图像识别分类的区别?

目标检测与图像识别分类的区别 目标检测和图像识别分类是计算机视觉领域中两个重要的任务,它们在处理图像数据时有一些区别。 目标检测是指在图像中定位和识别多个目标的过程。其主要目标是确定图像中每个目标的边界框位置以及对应的类别标签。目标检测任务通常涉…...

群晖设置DDNS (服务商Godaddy被墙 DDNS-GO无法解析 采用自定义脚本方式完成DDNS更新)

起因&解决思路 事情的开始大概是这样的。。godaddy买了个域名,好好的用了半个月。。然后一直更新失败发现被狗东西墙了 在提一嘴DDNS-GO 解析失败原因 DDNS-GO必须要先向godaddy请求自己的IP地址[这里被墙卡住了],然后比对,再决定是否上…...

博客摘录「 MySQL不区分大小写设置」2023年10月31日

操作系统的大小写是否敏感决定了数据库大小写是否敏感,而 Windows 系统是对大小写不敏感的,Linux 系统对大小写敏感。 mysql创建表时, 字符集需要设置"编码集(charset)"和"校验规则(collation)"。 编码集比较常用的有utf8和utf8mb4…...

【UE5】如何在UE5.1中创建级联粒子系统

1. 可以先新建一个actor蓝图,然后在该蓝图中添加一个“Cascade Particle System Component” 2. 在右侧的细节面板中,点击“模板”一项中的下拉框,然后点击“Cascade粒子系统(旧版)” 然后就可以选择在哪个路径下创建级…...

SpringCloud(五) Eureka与Nacos的区别

SpringCloud(二) Eureka注册中心的使用-CSDN博客 SpringCloud(四) Nacos注册中心-CSDN博客 在这两篇博文中我们详细讲解了Eureka和Nacos分别作为微服务的注册中心的使用方法和注意事项,但是两者之间也有一些区别. 一, Nacos实例分类 Nacos实例分为两种类型: 临时实例:如果实例…...

C语言 DAY07:预编译,宏,选择性编译,库(静态库,动态库)

声明与定义分离 声明:将声明单独封装成一个以.h为后缀名的头文件 定义:将定义的变量,函数,数组所在的源文件单独封装成一个.c文件。其实就是在源文件基础上将定义过的所有东西的声明分离出去就是了。 注意:1.声明的…...

[EFI]asus strix b760-i 13900F电脑 Hackintosh 黑苹果efi引导文件

硬件型号驱动情况主板 asus strix b760-i 处理器 I9 13900F 已驱动内存crucial ddr5-5200 64gb(32gb*2)(overclock 5600)已驱动硬盘 WD black sn850 500g*2 已驱动显卡rx570已驱动声卡Realtek ALCS1220A已驱动网卡Intel I225-V 2.5 Gigabit Ethernet已驱动无线网卡蓝牙Fevi T91…...

力扣383.赎金信

原题链接:383.赎金信 根据题意得出,需要判断第一个字符串内的字符有没有都在第二个字符串内出现(会有重复字符),并且范围限制在26个英文小写字母 此时可以考虑用一个数组map 作哈希法映射操作 先将遍历第一个字符串,并让每个字符…...

CORS的原理以及在Node.js中的使用

在前端浏览器中的JavaScript代码发起HTTP请求到服务器的Node.js程序,CORS(跨域资源共享)会在以下几个步骤中发挥作用: 前端JavaScript代码发起请求: 前端浏览器中的JavaScript代码使用XMLHttpRequest对象或Fetch API等…...

kotlin实现单例模式

kotlin实现单例模式,大体分为两种方式,一种饿汉式单例模式,一种懒汉式单例模式。 1.饿汉式单例模式 在类前面加上object关键字,就实现了饿汉式单例模式: object singletonDemo { }在kotlin中,使用这种方式…...

【Java】LinkedList 集合

LinkedList集合特点 LinkedList 底层基于双向链表实现增删 效率非常高,查询效率非常低。 LinkedList源码解读分析 LinkedList 是双向链表实现的 ListLinkedList 是非线程安全的(线程是不安全的)LinkedList 元素允许为null,允许重复元素Linked…...

MySQL-Galera-Cluster集群详细介绍

目录 一、什么是Mysql集群?1.单节点mysql存在的常见问题2.mysql集群介绍3.Mysql集群的优点和风险 二、Mysql集群的一些疑问1.mysql的AB复制和Galera Cluster有什么区别?2.什么情况下适用AB复制,什么情况下使用Galera cluster?3.可…...

JavaScript从入门到精通系列第二十六篇:详解JavaScript中的Math对象

大神链接:作者有幸结识技术大神孙哥为好友,获益匪浅。现在把孙哥视频分享给大家。 孙哥连接:孙哥个人主页 作者简介:一个颜值99分,只比孙哥差一点的程序员 本专栏简介:话不多说,让我们一起干翻J…...

u盘直接拔出文件丢失怎么找回?u盘文件恢复办法分享!

u盘作为一种便捷的数据存储设备,被广泛地使用。通过u盘,我们可以在不同设备之间轻松传输文件,然而有时候,我们可能因为匆忙或疏忽并未安全弹出u盘,而是直接将u盘拔出,进而导致重要文件丢失,u盘直…...

Altium Designer实战:用xSignals搞定DDR4内存的等长布线,告别时序烦恼

Altium Designer实战:用xSignals实现DDR4内存精准等长布线 在高速PCB设计中,DDR4内存接口的布线一直是硬件工程师面临的技术高地。当信号速率突破2400MHz时,地址、命令与数据线之间哪怕几个ps的时序偏差都可能导致系统不稳定。传统手工计算网…...

别再只盯着wx.login了!SpringBoot后端实战:用getPhoneNumber接口搞定小程序用户手机号绑定

微信小程序用户手机号绑定:SpringBoot后端深度实践指南 在当今移动互联网生态中,微信小程序已成为连接用户与服务的重要桥梁。对于需要强实名认证或直接触达用户的业务场景(如电商交易、金融服务、政务办理等),仅依赖w…...

DLSS Swapper终极指南:免费开源工具让游戏DLSS管理变得简单快速

DLSS Swapper终极指南:免费开源工具让游戏DLSS管理变得简单快速 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper 如果你正在寻找一款能够智能管理游戏DLSS、FSR和XeSS文件的免费开源工具,那么DLS…...

DownKyi技术架构解析:构建高性能B站视频下载引擎的工程实践

DownKyi技术架构解析:构建高性能B站视频下载引擎的工程实践 【免费下载链接】downkyi 哔哩下载姬downkyi,哔哩哔哩网站视频下载工具,支持批量下载,支持8K、HDR、杜比视界,提供工具箱(音视频提取、去水印等&…...

2026杭州本地GEO优化公司排名,优质机构一站式推荐

AI 搜索时代,不少杭州企业踩过这样的坑:花大价钱找服务商做 GEO 优化,每天产出大量文章,结果在豆包、DeepSeek 等 AI 大模型里搜不到品牌信息,询盘没涨、获客成本反倒飙升。GEO 优化从来不是 “堆文章”,而…...

KLOGG:专业开发者的海量日志分析利器

KLOGG:专业开发者的海量日志分析利器 【免费下载链接】klogg Really fast log explorer based on glogg project 项目地址: https://gitcode.com/gh_mirrors/kl/klogg 你是否曾为在数十GB的日志文件中寻找关键错误信息而头痛不已?面对海量日志数据…...

类与对象(三)

再谈构造函数构造函数体赋值在创建对象时,编译器会通过调用构造函数,给对象中的各个成员变量一个合适的初始值:调用该构造函数后,对象中的每个成员变量都有了一个初始值,但是构造函数中的语句只能将其称作为赋初值&…...

如何用开源C模拟器在PC上运行Nintendo Switch游戏:Ryujinx技术深度解析

如何用开源C#模拟器在PC上运行Nintendo Switch游戏:Ryujinx技术深度解析 【免费下载链接】Ryujinx 用 C# 编写的实验性 Nintendo Switch 模拟器 项目地址: https://gitcode.com/GitHub_Trending/ry/Ryujinx Ryujinx是一款用C#编写的开源Nintendo Switch模拟器…...

AI教材生成新趋势!低查重AI工具,让教材编写不再困难!

教材创作与AI工具助力 教材初稿终于写好了,然而修改和优化的过程却像是一场“折磨”!逐字逐句地检查逻辑错误和知识点不准确的地方,真的是耗费了不少时间;调整一个章节的结构,就会影响到后面好多部分,修改…...

腾讯 Marvis 操作系统层 AI 助手内测:多场景显身手,“AI 打工人”雏形初现但仍待打磨

多场景显身手近日,腾讯开始内测一款名为 Marvis(马维斯)的操作系统层个人 AI 助手。这一 AI 助手通过多个 Agent 的协作完成 App 操作、EXE 操作、电脑操作、文件管理、文档生成以及各种复杂任务,24 小时持续在线,并支…...