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条文档

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/128218.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

最小化安装移动云大云操作系统--BCLinux-R8-U2-Server-x86_64-231017版

有个业务系统因为兼容性问题,需要安装el8.2的系统,因此对应安装国产环境下的BCLinuxR8U2系统来满足用户需求。BCLinux-R8-U2-Server是中国移动基于AnolisOS8.2深度定制的企业级X86服务器通用版操作系统。本文记录在DELL PowerEdge R720xd服务器上最小化安…

Redis-分布式锁

Redis-setnx实现分布式锁 Redis实现分布式锁主要利用Redis的setnx命令。setnx是SET if not exists(如果不存在,则SET)的简写。(NX是互斥、EX是设置超时时间) 但是如上会面临一个问题,当业务执行时间太长,导致业务还没执行完锁已到期&#xf…

Flask三种文件下载方法

Flask 是一个流行的 Python Web 框架,它提供了多种方法来实现文件下载。在本文中,我们将介绍三种不同的方法,以便你能够选择最适合你应用程序的方法。 方法一:使用 send_file 函数 send_file 函数是 Flask 中最常用的文件下载方法…

令人深刻的c#工具和库

为了方便大家开发,介绍一些库和框架。 框架 CAP - 具有本地持久消息功能的EventBus,用于SOA或微服务架构中的系统集成。Cinchoo ETL - .NET的ETL框架(用于CSV,Flat,Xml,JSON,键值格式文件的分…

CentOS开机自动运行jar程序实现

前面已经有一篇文章介绍jar包如何在CentOS上运行,《在linux上运行jar程序操作记录》 后来发现系统重启后不能自动运行,导致每次都要手动打开,这篇介绍如何自动开机启动运行jar程序。 一、找到JDK程序执行位置 [rootlocalhost /]# which jav…

2.Vue3项目(二):vue项目创建,项目必需的基础依赖配置,项目集成各种第三方依赖

目录 一、环境配置 1.下载node.js 2.pnpm的配置 二、创建项目 1.先创建好项目文件夹

【开题报告】基于 Spring Boot 的在线预约导游系统的设计与实现

1.引言 在旅游行业中,导游起到了重要的作用,他们为游客提供了专业的旅游服务和相关信息。然而,传统的导游预约方式可能存在一些问题,如信息不透明、预约流程繁琐等。因此,我们计划开发一个基于 Spring Boot 的在线预约…

学习笔记二十九:K8S配置管理中心Configmap实现微服务配置管理

Configmap概述 Configmap概述Configmap能解决哪些问题?Configmap应用场景局限性 Configmap创建方法命令行直接创建通过文件创建指定目录创建configmap 编写configmap资源清单YAML文件使用Configmap通过环境变量引入:使用configMapKeyRef通过环境变量引入…

Azure机器学习 - 在 Azure 机器学习中上传、访问和浏览数据

目录 一、环境准备二、设置内核三、下载使用的数据四、创建工作区的句柄五、将数据上传到云存储空间六、访问笔记本中的数据七、创建新版本的数据资产八、清理资源 机器学习项目的开始阶段通常涉及到探索性数据分析 (EDA)、数据预处理(清理、特征工程)以…

Flutter 使用 dio 遇到的问题合集

泪流满面啊&#xff0c;&#xff0c;&#xff0c;&#xff0c;&#xff0c; 1. postHttpLogin-异常-----DioException [bad response]: The request returned an invalid status code of 500. /// 错误代码如下&#xff1a;Future<String?> postHttpLogin(String textC…

Java 项目 服务器 日志配置

最近 在搞一个0-1的项目 就想把 服务器日志配置 记录一下 我们使用的是 单体微服务项目 首先你需要一个xml <?xml version"1.0" encoding"UTF-8"?> <configuration><!--定义日志存放的位置--><springProperty scope"context&…

Java语法 - 01

Java基础 Java 是一种广泛使用的高级编程语言&#xff0c;最初由Sun Microsystems于1995年发布。它被设计为具有简单、可移植和面向对象的特性&#xff0c;以满足跨平台应用程序开发的需求。以下是一些关于 Java 的简介&#xff1a; 跨平台性&#xff1a;Java 程序可以在不同…

基于QT的简易计算器(一)

目录 0 简介1.设计原理1.1界面设计1.1.1界面基本布局1.1.2 界面调整和美化1.1.2 控件重命名 1.2 连接信号和槽1.3 软件逻辑1.3.1四则运算1.3.2 连续运算&#xff08;不完全&#xff09;的原理1.3.3 清屏1.3.4 退格1.3.5 等于1.3.6 小数点 2.总结与拓展 0 简介 最近在学QT&…

Django实战项目-学习任务系统-自定义URL拦截器

接着上期代码框架&#xff0c;6个主要功能基本实现&#xff0c;剩下的就是细节点的完善优化了。 首先增加URL拦截器&#xff0c;你不会希望没有登录用户就可以进入用户主页各种功能的&#xff0c;所以增加URL拦截器可以解决这个问题。 Django框架本身也有URL拦截器&#xff0…

el-dialog点击esc退出时如何清除数据,如何触发方法

例如下面的el-dialog <el-dialog :title"title" :visible.sync"open" width"1400px" append-to-body close"handleDialogClose">...</el-dialog>当:visible.sync的时候才能键盘esc控制关闭窗口 当close的时候,键盘esc关闭…

12504 - Updating a Dictionary (UVA)

题目链接如下&#xff1a; Online Judge 我的代码如下&#xff1a; #include <string> #include <iostream> #include <map> #include <set> // #define debugint T, loc1, loc2; std::string s, key, value; char ch[] "-*";int main()…

Linux 中 initcall 机制详解

源码基于&#xff1a;Linux 5.4 0. 前言 Linux 对驱动程序提供静态编译进内核和动态加载两种方式&#xff0c;当采用静态方式时&#xff0c;开发者如果想要在系统中启动这个驱动通常调用类似 xxx_init() 接口。 最直观的做法&#xff1a;开发者试图添加一个驱动初始化程序时&…

【Python入门二】安装第三方库(包)

安装第三方库/包 1 使用pip安装2 使用PyCharm软件安装3 离线安装&#xff0c;使用whl文件安装参考 在Python中&#xff0c;有多种安装第三方库的方法&#xff0c;下面是一些常用的方法&#xff1a; 1 使用pip安装 pip是Python中最常用的包管理工具&#xff0c;也是最常用的在线…

电商中的百万量级

背景 我们一般在设计app架构或者访问量评估时&#xff0c;特别是在小公司时&#xff0c;老板总是希望我们能支持百万级的访问量&#xff0c;但是实际我们真的需要这么多吗&#xff0c;你知道百万访问的概念是多大吗 支持百万级 一般来说&#xff0c;百万级的页面访问也就意味…

代码随想录 Day35 动态规划04 01背包问题和完全背包问题 LeetCode T416 分割等和子集

背包问题 说到背包问题大家都会想到使用动规的方式来求解,那么为什么用动规呢,dp数组代表什么呢?初始化是什么,遍历方式又是什么,这篇文章笔者将详细讲解背包问题的经典例题0-1背包问题和完全背包问题的解题方式,希望能帮助到大家 1.暴力方式 有人一提到背包问题就只会使用动态…