MongoDB是一个基于分布式文件存储的数据库,由C++语言编写,旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB的常用操作主要包括数据库操作、集合操作、文档操作等。以下是对这些操作的详细介绍:
一、数据库操作
- 查看所有数据库
- 命令:
show dbs
- 注意:刚创建的数据库不会显示在列表中,直到你向其中插入数据。
- 命令:
- 创建/切换数据库
- 命令:
use DATABASE_NAME
- 如果数据库不存在,则创建数据库;如果数据库已存在,则切换到该数据库。
- 命令:
- 删除当前数据库
- 命令:
db.dropDatabase()
- 执行此命令前,应确保已使用
use
命令切换到要删除的数据库。
- 命令:
- 查看当前数据库
- 命令:
db
或db.getName()
- 这两个命令都可以返回当前正在使用的数据库名称。
- 命令:
二、集合操作
- 创建集合
- 显式创建:
db.createCollection(name, options)
name
:集合名称。options
:可选参数,如capped
(是否为固定大小集合)、size
(集合最大大小)等。
- 隐式创建:当向一个不存在的集合中插入文档时,MongoDB会自动创建该集合。
- 显式创建:
- 查看集合
- 命令:
show collections
或db.getCollectionNames()
- 这两个命令都可以列出当前数据库中的所有集合。
- 命令:
- 删除集合
- 命令:
db.collection.drop()
collection
:要删除的集合名称。
- 命令:
三、文档操作
- 插入文档
- 单文档插入:
db.collection.insertOne(document)
或db.collection.save(document)
(save
方法在新版本中已废弃) - 多文档插入:
db.collection.insertMany([document1, document2, ...])
- 单文档插入:
- 查询文档
- 查询所有文档:
db.collection.find()
- 格式化查询结果:
db.collection.find().pretty()
- 按条件查询:
db.collection.find({条件})
- 查询所有文档:
- 更新文档
- 更新文档:
db.collection.updateOne(query, update, {upsert: <boolean>, multi: <boolean>, writeConcern: <document>})
query
:查询条件。update
:更新内容,使用$set
操作符来指定要更新的字段。upsert
:若不存在符合条件的文档,是否插入新文档。multi
:是否更新所有符合条件的文档,默认为false
,只更新第一个。
- 注意:
updateMany
用于更新多个文档,其用法与updateOne
类似,但默认multi
为true
。
- 更新文档:
- 删除文档
- 删除单个文档:
db.collection.deleteOne(query)
- 删除多个文档:
db.collection.deleteMany(query)
- 删除所有文档:
db.collection.remove({})
(注意:remove
方法在新版本中可能已被弃用,建议使用deleteMany
)
- 删除单个文档:
四、其他常用操作
- 查看索引
- 查看集合的所有索引:
db.collection.getIndexes()
- 查看索引大小:
db.collection.totalIndexSize()
- 查看集合的所有索引:
- 创建索引
- 命令:
db.collection.createIndex(keys, options)
keys
:指定索引字段及排序顺序(1为升序,-1为降序)。options
:控制索引创建的选项,如unique
(是否唯一索引)。
- 命令:
- 删除索引
- 删除单个索引:
db.collection.dropIndex(indexName)
- 删除所有索引:
db.collection.dropIndexes()
- 删除单个索引:
- 聚合查询
- MongoDB提供了强大的聚合框架,允许对集合中的数据进行复杂的转换和聚合操作。
- 示例:
db.collection.aggregate([{$group: {_id: "$field", count: {$sum: 1}}}])
MongoDB的操作非常灵活,上述介绍只是常用操作的一部分。在实际应用中,你能需要根据具体需求进行更复杂的查询和操作。建议参考MongoDB的官方文档或相关教程以获取更全面的信息。