公司备案网站名称,重写Wordpress的js,wordpress国外主题推荐,优秀的移动网站文章目录 MongoDB 入门操作指南1. 连接到 MongoDB 数据库2. 查看当前数据库3. 显示所有数据库4. 切换或创建数据库5. 查看当前数据库中的所有集合6. 创建集合7. 插入文档插入单个文档插入多个文档 8. 查询文档查询所有文档查询匹配条件的文档格式化查询输出 9. 更新文档更新单个… 文章目录 MongoDB 入门操作指南1. 连接到 MongoDB 数据库2. 查看当前数据库3. 显示所有数据库4. 切换或创建数据库5. 查看当前数据库中的所有集合6. 创建集合7. 插入文档插入单个文档插入多个文档 8. 查询文档查询所有文档查询匹配条件的文档格式化查询输出 9. 更新文档更新单个文档更新多个文档 10. 删除文档删除单个文档删除多个文档 11. 删除集合12. 删除数据库13. 索引操作创建索引查看索引删除索引 13. 索引操作13.1 创建索引13.2 创建复合索引13.3 唯一索引13.4 查看索引13.5 删除索引13.6 删除所有索引 14. 聚合操作14.1 聚合管道基础14.2 常见的聚合操作符14.2.1 $match14.2.2 $group14.2.3 $sort14.2.4 $project14.2.5 $limit14.2.6 $skip14.2.7 $unwind 14.3 复杂的聚合管道示例 15. 事务操作需要 MongoDB 4.0 支持 MongoDB 入门操作指南
MongoDB 是一个开源的 NoSQL 数据库它基于文档存储数据适用于大量非结构化数据。本文将介绍 MongoDB 的一些常见操作和基本命令帮助你快速入门。
1. 连接到 MongoDB 数据库
首先你需要在命令行中运行以下命令来连接到 MongoDB 实例
mongo此命令将连接到默认的 localhost:27017 地址的 MongoDB 实例。
2. 查看当前数据库
连接到 MongoDB 后你可以查看当前使用的数据库
db3. 显示所有数据库
要查看当前 MongoDB 实例中的所有数据库可以运行以下命令
show databases4. 切换或创建数据库
你可以使用以下命令切换到一个已有的数据库或者如果该数据库不存在它会被创建
use database_name例如
use mydb5. 查看当前数据库中的所有集合
要查看当前数据库中的所有集合可以使用以下命令
show collections6. 创建集合
你可以显式地创建一个集合使用以下命令
db.createCollection(collection_name)如果你插入数据时指定了集合名MongoDB 会自动创建该集合。
7. 插入文档
插入单个文档
db.collection_name.insertOne({key1: value1, key2: value2})插入多个文档
db.collection_name.insertMany([{key1: value1}, {key2: value2}])8. 查询文档
查询所有文档
db.collection_name.find()查询匹配条件的文档
db.collection_name.find({key: value})格式化查询输出
db.collection_name.find({key: value}).pretty()9. 更新文档
更新单个文档
db.collection_name.updateOne({key: value}, {$set: {key1: new_value}})更新多个文档
db.collection_name.updateMany({key: value}, {$set: {key1: new_value}})10. 删除文档
删除单个文档
db.collection_name.deleteOne({key: value})删除多个文档
db.collection_name.deleteMany({key: value})11. 删除集合
db.collection_name.drop()12. 删除数据库
如果你想删除整个数据库可以使用以下命令
db.dropDatabase()13. 索引操作
创建索引
db.collection_name.createIndex({key: 1}) // 1 表示升序-1 表示降序查看索引
db.collection_name.getIndexes()删除索引
db.collection_name.dropIndex(index_name)13. 索引操作
MongoDB 提供了索引功能来提高查询性能。索引类似于书本的目录可以加速文档的查找。以下是一些常见的索引操作。
13.1 创建索引
你可以在集合中为一个或多个字段创建索引。创建索引的基本语法如下
db.collection_name.createIndex({ field_name: order })field_name: 要创建索引的字段。order: 1 表示升序索引-1 表示降序索引。
示例
// 为字段 name 创建升序索引
db.users.createIndex({ name: 1 })// 为字段 age 创建降序索引
db.users.createIndex({ age: -1 })13.2 创建复合索引
你可以在多个字段上创建复合索引。复合索引的顺序非常重要它会影响查询的效率。
db.collection_name.createIndex({ field1: 1, field2: -1 })示例
// 为字段 name 和 age 创建复合索引
db.users.createIndex({ name: 1, age: -1 })13.3 唯一索引
如果你希望某个字段的值是唯一的可以创建唯一索引。唯一索引可以防止插入重复的数据。
db.collection_name.createIndex({ field_name: 1 }, { unique: true })示例
// 为 email 字段创建唯一索引
db.users.createIndex({ email: 1 }, { unique: true })13.4 查看索引
要查看集合中已创建的索引可以使用 getIndexes() 方法
db.collection_name.getIndexes()示例
// 查看 users 集合的所有索引
db.users.getIndexes()13.5 删除索引
如果索引不再需要或者索引不再提供优化性能可以删除索引。
db.collection_name.dropIndex(index_name)示例
// 删除 name 字段的索引
db.users.dropIndex(name_1)13.6 删除所有索引
如果你希望删除集合中的所有索引除了默认的 _id 索引可以使用 dropIndexes() 方法
db.collection_name.dropIndexes()示例
// 删除 users 集合中的所有索引
db.users.dropIndexes()14. 聚合操作
MongoDB 的聚合框架允许你执行更复杂的查询支持数据过滤、排序、分组和变换。聚合操作以管道形式表达通常由多个阶段组成。
14.1 聚合管道基础
一个简单的聚合管道包含多个阶段每个阶段都通过一个特定的操作符来处理数据。常见的操作符有 $match、$group、$sort、$project 等。
db.collection_name.aggregate([{ $match: { key: value } }, // 筛选符合条件的数据{ $group: { _id: $field, total: { $sum: $value } } } // 根据某个字段进行分组并计算总和
])14.2 常见的聚合操作符
14.2.1 $match
$match 用于筛选符合条件的文档类似于 SQL 的 WHERE 子句。
db.collection_name.aggregate([{ $match: { age: { $gt: 30 } } }
])示例
// 查询年龄大于 30 的用户
db.users.aggregate([{ $match: { age: { $gt: 30 } } }
])14.2.2 $group
$group 用于根据指定字段对文档进行分组并执行聚合操作如求和、平均值等。
db.collection_name.aggregate([{ $group: { _id: $field, total: { $sum: $value } } }
])示例
// 按年龄分组并计算每个年龄段的用户数量
db.users.aggregate([{ $group: { _id: $age, count: { $sum: 1 } } }
])14.2.3 $sort
$sort 用于对查询结果进行排序类似于 SQL 的 ORDER BY 子句。
db.collection_name.aggregate([{ $sort: { age: -1 } }
])示例
// 按年龄降序排序
db.users.aggregate([{ $sort: { age: -1 } }
])14.2.4 $project
$project 用于指定文档中返回哪些字段可以用来添加、修改或删除字段。
db.collection_name.aggregate([{ $project: { field1: 1, field2: 1 } }
])示例
// 返回用户的姓名和年龄字段
db.users.aggregate([{ $project: { name: 1, age: 1 } }
])14.2.5 $limit
$limit 用于限制返回的文档数量类似于 SQL 的 LIMIT 子句。
db.collection_name.aggregate([{ $limit: 5 }
])示例
// 返回前 5 个用户
db.users.aggregate([{ $limit: 5 }
])14.2.6 $skip
$skip 用于跳过指定数量的文档常用于分页。
db.collection_name.aggregate([{ $skip: 10 }
])示例
// 跳过前 10 个用户返回后续的用户
db.users.aggregate([{ $skip: 10 }
])14.2.7 $unwind
$unwind 用于拆分数组字段每个数组元素将变为一个单独的文档。
db.collection_name.aggregate([{ $unwind: $array_field }
])示例
// 拆分包含多个订单的用户文档
db.users.aggregate([{ $unwind: $orders }
])14.3 复杂的聚合管道示例
假设我们有一个 orders 集合其中包含用户的订单信息每个订单记录包括 user_id 和 total_amount。我们想按 user_id 分组计算每个用户的总订单金额。
db.orders.aggregate([{ $group: { _id: $user_id, totalSpent: { $sum: $total_amount } } },{ $sort: { totalSpent: -1 } }
])此管道会根据 user_id 分组并计算每个用户的 total_amount 总和然后按总金额降序排序。
15. 事务操作需要 MongoDB 4.0 支持
在 MongoDB 4.0 及以上版本你可以使用事务来保证一系列操作的原子性。
// 开始一个会话并启动事务
const session db.getMongo().startSession();
session.startTransaction();// 执行数据库操作// 提交事务
session.commitTransaction();// 回滚事务
session.abortTransaction();// 结束会话
session.endSession();