mongo语法(一)基本操作

MongoDB 使用 MongoDB 查询语言(MongoDB Query Language, MQL) ,它是基于 JSON 样式的文档和 BSON 数据结构的查询语言。MongoDB 的语法与传统的 SQL 不同,它基于 文档模型,而 SQL 基于关系模型,因此查询和操作 MongoDB 数据的方式也有所不同。

前提、操作符

1、比较操作符
  • $eq:等于

  • $ne:不等于

  • $gt:大于

  • $lt:小于

  • $gte:大于等于

  • $lte:小于等于

    db.myCollection.find({ age: { $gt: 30 } }) // 查询 age 大于 30 的文档

2、逻辑操作符
  • $and:与操作

  • $or:或操作

  • $nor:非操作

  • $not:否定操作

    db.myCollection.find({
    $or: [{ age: { $gt: 30 } }, { status: "active" }]
    })

3、结合操作符
  • $in:匹配数组中的值

  • $nin:不匹配数组中的值

  • $exists:检查字段是否存在

    db.myCollection.find({ age: { $in: [25, 30, 35] } })

4、字符串操作
  • $regex:正则表达式查询

  • $options:正则表达式的选项(例如,"i" 表示不区分大小写)

    db.myCollection.find({ name: { $regex: "^John", $options: "i" } })

5、数值操作
  • $size:匹配数组的大小

  • $all:匹配数组中的所有元素

  • $elemMatch:匹配数组中的元素

    db.myCollection.find({ tags: { $size: 3 } }) // 查找 tags 数组长度为 3 的文档

一、连接到mongo

使用 MongoDB Shell,连接到远程 MongoDB 实例:

mongo --host <host> --port <port> -u <username> -p <password>

二、基本数据库操作

1、查看所有数据库
show databases
2、创建数据库

在 MongoDB 中,数据库是 惰性创建 的,即在插入数据时数据库会自动创建。

use myDatabase
3、切换到指定数据库
use <databaseName>
4、查看当前数据库
db
5、删除数据库
db.dropDatabase()

三、集合操作

1、查看当前数据库的所有集合
show collections
2、创建集合

MongoDB 会在插入数据时自动创建集合,但你也可以手动创建集合:

db.createCollection("myCollection")
3、删除集合
db.myCollection.drop()

四、文档增删查操作

1、插入单个文档
db.myCollection.insertOne({
  name: "John Doe",
  age: 30,
  status: "active"
})
2、插入多个文档
db.myCollection.insertMany([
  { name: "Alice", age: 28, status: "inactive" },
  { name: "Bob", age: 35, status: "active" }
])
3、更新单个文档
db.myCollection.updateOne(
  { name: "John Doe" }, // 查找条件
  { $set: { age: 31 } }  // 更新操作
)
4、更新多个文档
db.myCollection.updateMany(
  { status: "active" },
  { $set: { status: "inactive" } }
)
5、删除单个文档
db.myCollection.deleteOne({ name: "John Doe" })

db.myCollection.deleteMany({ age: { $lt: 30 } })

五、文档查询操作

1、查询所有文档
db.myCollection.find()
2、查询匹配条件的文档
db.myCollection.find({ name: "John Doe" })
3、查询特定字段的文档
db.myCollection.find({ age: 30 }, { name: 1, age: 1 })  // 返回 name 和 age 字段
4、查询条件与逻辑运算
db.myCollection.find({ age: { $gt: 25 } })  // 查询 age > 25 的文档
5、聚合操作

MongoDB 使用 聚合管道 来执行复杂的查询和数据处理操作。聚合管道是按顺序连接的多个阶段,每个阶段处理数据并将结果传递给下一个阶段。

聚合操作符:

  • $match:筛选文档,类似于 find 查询。
  • $group:分组操作,可以计算总和、平均数、最大值等。
  • $sort:对结果排序。
  • $project:选择要显示的字段或添加新字段。
  • $limit:限制返回的文档数量。
  • $skip:跳过指定数量的文档。

demo:

db.myCollection.aggregate([
  { $match: { status: "active" } },          // 第一个阶段:筛选 status 为 active 的文档
  { $group: { _id: "$age", total: { $sum: 1 } } }  // 第二个阶段:按年龄分组,统计每个年龄的总数
])

db.myCollection.aggregate([
  { $match: { status: "active" } },
  { $group: { _id: "$age", total: { $sum: 1 } } },
  { $sort: { total: -1 } },                  // 按 total 字段降序排序
  { $limit: 5 }                              // 返回前 5 条结果
])

六、索引操作

1、创建索引

(1)创建单字段索引

db.myCollection.createIndex({ age: 1 })  // 升序索引

(2)创建复合索引

db.myCollection.createIndex({ name: 1, age: -1 })  // name 升序,age 降序
2、查看索引
db.myCollection.getIndexes()
3、删除索引
db.myCollection.dropIndex("indexName")

七、事务操作

MongoDB 4.x 引入了对多文档事务的支持。事务允许在多个操作之间保持原子性。

const session = db.getMongo().startSession();

session.startTransaction();
try {
  db.myCollection.insertOne({ name: "John Doe" }, { session });
  db.myCollection.updateOne({ name: "Alice" }, { $set: { status: "active" } }, { session });
  session.commitTransaction();  // 提交事务
} catch (error) {
  session.abortTransaction();  // 事务回滚
  throw error;
} finally {
  session.endSession();  // 结束会话
}

以上介绍的只是 MongoDB 语法的基础和常见操作,MongoDB 还提供了更多的高级功能,如全文索引、地理空间查询、数据导入导出等,开发者可以根据项目需求深入学习和使用。

相关推荐
代码欢乐豆12 分钟前
MongoDB的部署和操作
数据库·mongodb
<e^πi+1=0>23 分钟前
使用Locust对MongoDB进行负载测试
数据库·mongodb
圆蛤镇程序猿32 分钟前
【什么是MVCC?】
java·数据库·oracle
开心邮递员34 分钟前
sql server: split 函数;cross apply操作符
数据库·sql
老大白菜35 分钟前
PostgreSQL 内置函数
数据库·postgresql
Damon撇嘴笑35 分钟前
Cause: java.sql.SQLException: sql injection violation, comment not allow异常问题处理
java·数据库·sql
山林竹笋1 小时前
Java解析PDF数据库设计文档
数据库·pdf
Aimin20221 小时前
Kali系统(Debian 10.3) 遇到的问题
数据库·mysql·debian
Run Out Of Brain1 小时前
使用systemd管理MySQL服务器
服务器·数据库·mysql
小怪兽ysl2 小时前
【Oceanbase数据库常用巡检SQL】
数据库·sql·oceanbase