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

MongoDB Compass中MONGOSH常用查询整理

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.kler.cn/a/568523.html

相关文章:

  • 洛谷P1004方格取数(两个题解)P1359租用游艇 P2285打鼹鼠 P1725琪露诺 P1886滑动窗口/单调序列
  • 【沙漠之心:揭秘尘封奇迹的终极之旅】
  • Redis通用命令
  • Java 容器之 List
  • 2024年时间序列预测领域的SOTA模型总结
  • 代数结构—笔记
  • swift 开发效率提升工具
  • Oracle 数据库基础入门(四):分组与联表查询的深度探索(上)
  • 内存管理c/c++
  • 鸿蒙项目实战:PR#39888中解决的ACE引擎具体问题及技术方案赏析
  • Android 端侧运行 LLM 框架 MNN 及其应用
  • 【Linux】消息队列和信号量
  • 问题修复-后端返给前端的时间展示错误
  • Pytorch使用手册—Raspberry Pi 4 上的实时推理(30 FPS!)(专题三十六)
  • QEMU源码全解析 —— 内存虚拟化(23)
  • 语法Object.defineProperty()
  • YashanDB简介
  • Java 设计模式:软件开发的精髓与艺
  • FunPapers[3]:WWW‘25「快手」生成式回归预测观看时长
  • Makefile、Make和CMake:构建工具的三剑客