本教程旨在介绍MongoDB的基本语法和常用的数据库操作方法,帮助初学者快速掌握其核心功能。
MongoDB 是一种流行的开源文档型数据库系统,以其高性能、高可用性和可扩展性而著称。本段落将详细介绍 MongoDB 的一些基本使用方法及常见操作。
1. 创建与查询数据库:
创建一个新数据库只需在命令行中输入 `use database_name` 命令即可,如果该名称的数据库不存在,则会自动创建;若已存在则切换至该库进行后续操作。要查看当前正在使用的数据库名,请使用 `db` 命令。
2. 创建集合与查看:
集合类似于关系型数据库中的表结构,在 MongoDB 中通过向其添加数据来实现创建,例如:`db.collection_name.insert({key1: value1, key2: value2})`。要列出当前库内所有的集合名称,请执行 `show collections` 命令;而想要查看某个具体集合内的文档内容,则可以使用 `db.collection.find()`。
3. 删除集合与数据库:
删除一个特定的集合,只需输入命令:`db.collection_name.drop()`, 这将永久移除该集合及其数据。若要删除整个数据库(包括其所有子集和文档),首先切换到 admin 数据库,然后执行 `use admin; db.runCommand({ dropDatabase: 1 })`.
4. 操作符:
MongoDB 支持多种操作符用于查询与更新,如比较操作符 (`$eq`, `$gt`, `$lt`)、逻辑操作符 (`$and`, `$or`) 和数组操作符 (`$elemMatch, $all`), 这些功能使数据处理更加灵活。
5. 增删改查:
- **增**:使用 `insertOne()` 或者 `insertMany()` 方法向集合添加文档。
- **删**:通过执行 `deleteOne()`, `deleteMany()` 来删除符合条件的文档,旧版本中推荐使用的命令是`db.collection.remove()`
- **改**:利用 `updateOne()`或`updateMany()` 更新匹配条件下的文档,可以使用诸如 `$set` 等操作符来指定更新内容。
- **查**:查询集合中的数据时可以通过组合使用 `find()` 方法和相应的查询条件实现。例如, 要查找所有年龄为18岁的用户记录,则可执行命令: `db.data.find({age: 18})`.
6. 模糊查询:
在 MongoDB 中,可以利用正则表达式进行模糊匹配搜索。比如:`db.collection.find({name: /pattern/})`, 这类似于 SQL 的 `%pattern%` 查询, 其中 pattern 是要查找的字符串模式。
7. $in 查询
使用 `$in` 操作符可以在查询条件中指定一个值列表,例如:`db.data.find({tags: {$in: [tag1, tag2]}})` 可以找到所有 `tags` 字段包含 `tag1` 或者 `tag2` 的文档。
8. MongoDB 账号管理
MongoDB 提供了全面的用户账户管理系统,包括:
- 创建超级管理员:使用命令如 `db.createUser({user: admin, pwd: password, roles:[{role:root, db:admin}]})`
- 修改配置文件启用认证功能:在 `mongod.conf` 文件中设置 `auth = true`.
- 重启服务:运行对应的系统命令,例如 Linux 下的 `sudo service mongod restart`.
- 创建普通用户账户: 使用类似上述创建管理员的方法, 只是角色有所不同。
- 查看当前数据库下的所有用户信息可以使用命令如 `db.runCommand({listUsers:1})`
- 删除指定用户名的用户:`db.dropUser(username)`
- 修改密码:`db.changeUserPassword(username, newpassword)`.
- 分配不同的角色给不同级别的用户,例如读写权限(readWrite)和只读权限(read).
9. MongoDB 中索引
创建适当的索引能够显著提高查询效率:
- 创建单列升序或降序的索引:`db.collection.createIndex({key: 1})`
- 多字段组合索引:`db.collection.createIndex({field1: 1, field2: -1})`
- 子文档中的字段也可以创建单独的索引。
- 设置唯一性约束,防止重复值出现:`db.collection.createIndex({name: 1}, {unique: true});`.
- 查看已有的所有索引:`db.collection.getIndexes()`
- 删除指定或全部索引:使用 `dropIndex()` 或者 `dropIndexes()` 方法.
- 索引重建命令为 `reIndex()`, 可以用来刷新数据库中的现有索引。
- 注意合理设置,避免过度创建导致性能下降。
掌握了这些基础操作后,在 MongoDB 数据库的应用中将会更加得心应手。