MongoDB Compass中MONGOSH常用查询整理

devtools/2025/3/4 16:25:46/

MongoDB Compass中MONGOSH常用查询整理

  • 选择数据库
  • 基本的查找指令
    • find() 方法
    • findOne() 方法
  • 高级查询条件
    • 比较操作符
    • 逻辑操作符
    • 投影操作
    • 排序操作
    • 限制和跳过操作
      • limit() 方法
      • skip() 方法
    • 正则表达式查询
    • 数组查询

MongoDB Compass 是一款可视化的 MongoDB 数据库管理工具,其中的 MongoSH(MongoDB Shell)提供了丰富的指令用于查找数据

选择数据库

例如,选择名为 testdb 的数据库

use testdb

基本的查找指令

find() 方法

find() 方法用于从集合中查询文档,可接受一个查询条件作为参数,若不传递参数,则返回集合中的所有文档

  • 返回集合中的所有文档
db.yourCollectionName.find()

例如,查询 users 集合中的所有文档:

db.users.find()

此命令会返回 users 集合中的所有文档,默认以 JSON 格式显示

  • 返回集合中的部分文档(指定查询条件)
db.yourCollectionName.find({ field: value })

例如,查询 users 集合中 age 字段值为 25 的文档:

db.users.find({ age: 25 })

findOne() 方法

findOne() 方法用于返回集合中满足条件的第一个文档,若不传递参数,则返回集合中的第一个文档

db.yourCollectionName.findOne({ field: value })

例如,查询 users 集合中 name 字段值为 “zhangsan” 的第一个文档:

db.users.findOne({ name: "zhangsan" })

高级查询条件

比较操作符

  • $gt(大于)
    查询 users 集合中 age 大于 20 的文档:
db.users.find({ age: { $gt: 20 } })
  • $lt(小于)
    查询 users 集合中 age 小于 30 的文档:
db.users.find({ age: { $lt: 30 } })
  • $gte(大于等于)
    查询 users 集合中 age 大于等于 25 的文档:
db.users.find({ age: { $gte: 25 } })
  • $lte(小于等于)
    查询 users 集合中 age 小于等于 28 的文档:
db.users.find({ age: { $lte: 28 } })
  • $ne(不等于)
    查询 users 集合中 age 不等于 22 的文档:
db.users.find({ age: { $ne: 22 } })

逻辑操作符

  • $and(逻辑与)
    查询 users 集合中 age 大于 20 且小于 30 的文档:
db.users.find({ $and: [ { age: { $gt: 20 } }, { age: { $lt: 30 } } ] })
  • $or(逻辑或)
    查询 users 集合中 age 等于 20 或 name 等于 “zhangsan” 的文档:
db.users.find({ $or: [ { age: 20 }, { name: "zhangsan" } ] })
  • $not(逻辑非)
    查询 users 集合中 age 不大于 25 的文档:
db.users.find({ age: { $not: { $gt: 25 } } })

投影操作

投影操作可以指定返回文档中包含哪些字段,哪些字段不包含

db.yourCollectionName.find({ query }, { field1: 1, field2: 1, field3: 0 })
  • 1 表示包含该字段,0 表示不包含该字段,_id 字段默认是包含的,若不想包含,需要显式指定 _id: 0

例如,查询 users 集合中 name 和 age 字段,不包含 _id 字段:

db.users.find({}, { name: 1, age: 1, _id: 0 })

排序操作

使用 sort() 方法对查询结果进行排序

db.yourCollectionName.find().sort({ field: 1 })
  • 1 表示升序排序,-1 表示降序排序

例如,对 users 集合按 age 字段升序排序:

db.users.find().sort({ age: 1 })

按 name 字段降序排序:

db.users.find().sort({ name: -1 })

限制和跳过操作

limit() 方法

limit() 方法用于限制返回的文档数量

db.yourCollectionName.find().limit(10)

例如,查询 users 集合中的前 10 个文档:

db.users.find().limit(10)

skip() 方法

skip() 方法用于跳过指定数量的文档

db.yourCollectionName.find().skip(5).limit(10)

例如,跳过 users 集合中的前 5 个文档,然后返回接下来的 10 个文档

正则表达式查询

使用正则表达式可以进行模糊查询

db.yourCollectionName.find({ field: { $regex: 'pattern' } })

例如,查询 users 集合中 name 字段以 “J” 开头的文档:

db.users.find({ name: { $regex: '^J' } })

数组查询

如果文档中包含数组字段,可以使用特定的操作符进行查询

  • 查询数组中包含特定元素的文档
    假设 users 集合中的文档有一个 hobbies 数组字段,查询包含 “reading” 爱好的文档:
db.users.find({ hobbies: "reading" })
  • 使用 $all 操作符查询数组中包含多个特定元素的文档
    查询 hobbies 数组中同时包含 “reading” 和 “swimming” 的文档:
db.users.find({ hobbies: { $all: ["reading", "swimming"] } })
  • 使用 $size 操作符查询数组长度为特定值的文档
    查询 hobbies 数组长度为 3 的文档:
db.users.find({ hobbies: { $size: 3 } })

http://www.ppmy.cn/devtools/164505.html

相关文章

WSL下使用git克隆失败解决

WSL默认nat模式,别动了防火墙放行,见图1git导入[bash1],ip为你wsl上linxu通过ifconfig获取的本机ip,端口对好某alcsh软件开启tun模式【经过测试,不开也行】应该成了,如果不行,修改.wslconfig为下…

Prompt Engineering for Large Language Models

题目 大型语言模型的快速工程 简介 随着 OpenAI 的 ChatGPT 和 Google 的 Bard 等软件的普及,大语言模型(LLM)已经渗透到生活和工作的许多方面。例如,ChatGPT 可用于提供定制食谱,建议替换缺失的成分。它可用于起草研…

【Elasticsearch】ignore_malformed

在Elasticsearch中,ignore_malformed是一个字段映射参数,用于控制在索引文档时,如果字段数据不符合其定义的数据类型,Elasticsearch 应该如何处理这种情况。具体来说,ignore_malformed参数决定了是否忽略格式错误的数据…

决策树(Decision Tree):机器学习中的经典算法

1. 什么是决策树? 决策树(Decision Tree)是一种基于树形结构的机器学习算法,适用于分类和回归任务。其核心思想是通过一系列的规则判断,将数据集不断划分,最终形成一棵树状结构,从而实现预测目…

MFC中CMutex类和CSingleLock类,配合使用疑惑

在使用CMutex过程中,看到别人使用了CSingleLock类,想着明明CMutex已经可以实现线程同步了,为什么还有使用CSingleLock类呢? 在MFC中,虽然CMutex类本身可以实现线程同步,但通常会与CSingleLock类一起使用&am…

大型语言模型中微调和提炼的详细技术比较

目录 概要 介绍 技术背景 微调和参数高效策略 模型提炼 理念的冲突 QLoRA:将量化与低秩自适应相结合 高级量化:不破坏的缩小艺术 4 位量化为何有效 低阶适配器集成:效率的艺术 低秩适应为何有效 QLoRA 为何如此重要:宏观视角 提炼:机制与训练动态 学生永远无…

ZK Rollup

ZK Rollup 通过生成零知识证明来确保所有提交的交易都是有效的。生成零知识证明的过程涉及复杂的密码学运算,通常使用的是 zk-SNARK(零知识简洁非互动知识论证)或 zk-STARK(零知识可扩展透明知识论证)。以下是 ZK Roll…

从零开始设计一个完整的网站:HTML、CSS、PHP、MySQL 和 JavaScript 实战教程

前言 本文将从实战角度出发,带你一步步设计一个完整的网站。我们将从 静态网页 开始,然后加入 动态功能(使用 PHP),连接 数据库,最后加入 JavaScript 实现交互功能。通过这个教程,你将掌握一个…