目录
1.MongoDB为什么叫MongoDB
MongoDB是由10gen公司开发的一个NoSQL数据库,其名称"MongoDB"源自"humongous"(巨大的、庞大的)和"DB"(数据库)两个单词的组合。
据传,MongoDB最初的开发者Eliot Horowitz在开发这个数据库时,为了解决Web 2.0应用程序中存储海量数据的问题,决定开发一个轻量级、高性能的数据库系统。由于这个数据库的设计初衷是为了存储巨大的数据量,所以取名为"humongous",但是这个单词太难拼写和记忆,所以最终决定将它简写为"mongo"。后来为了更明确地表明它是一个数据库,将"mongo"与"DB"组合在一起,形成了"MongoDB"这个名称。
总之,"MongoDB"这个名称体现了这个数据库系统的主要特点,即能够处理海量数据,并且具有高性能、易用等优点。
2.安装MongoDB
-
在官网上下载MongoDB的安装包,然后解压缩到任意目录下。
-
创建一个数据目录,用来存储MongoDB的数据文件。可以在安装目录下创建一个data目录。
-
启动MongoDB服务器。在命令行中执行如下命令:
cd mongodb/bin
./mongod --dbpath /path/to/data
其中/path/to/data
是上一步中创建的数据目录的路径。
3.基本概念
-
数据库(Database):MongoDB中的数据存储在数据库中,每个数据库包含多个集合。
-
集合(Collection):MongoDB中的集合类似于关系型数据库中的表,但是不需要定义表结构,可以动态添加和删除字段。
-
文档(Document):MongoDB中的数据存储在文档中,文档类似于关系型数据库中的记录,但是可以是任意结构的JSON文档。
-
字段(Field):MongoDB中的文档由多个字段组成,每个字段都有一个键(key)和一个值(value),键必须是字符串类型,值可以是任意类型。
-
ID字段(_id):MongoDB中每个文档都有一个唯一的ID字段,如果在插入文档时没有指定ID字段,则MongoDB会自动生成一个ID字段。
4.基本操作
- 创建数据库
在MongoDB中,可以使用use
命令来创建数据库,例如:
use test
这个命令将创建一个名为test
的数据库,如果该数据库不存在,则创建一个新的数据库。可以使用show dbs
命令来查看当前存在的所有数据库。
- 创建集合
可以使用db.createCollection()
方法来创建集合,例如:
db.createCollection("students")
这个命令将创建一个名为students
的集合。
- 插入文档
可以使用db.collection.insert()
方法来插入文档,例如:
db.students.insert({ name: "Alice", age: 20, major: "Computer Science" })
这个命令将插入一个文档,包含了姓名、年龄和专业等字段。
- 查询文档
可以使用db.collection.find()
方法来查询文档,例如:
db.students.find()
这个命令将查询集合中的所有文档,返回结果类似于:
{ "_id" : ObjectId("61589f56ea29e4c93bcb1c63"), "name" : "Alice", "age" : 20, "major" : "Computer Science" }
- 更新文档
可以使用db.collection.update()
方法来更新文档,例如:
db.students.update( { name: "Alice" }, { $set: { age: 21 } } )
这个命令将更新名为Alice
的文档,将年龄字段改为21。
- 删除文档
可以使用db.collection.remove()
方法来删除文档,例如:
db.students.remove({ name: "Alice" })
这个命令将删除名为Alice
的文档。
5.高级操作
- 查询条件
可以在查询时指定查询条件,例如:
db.students.find({ age: { $gt: 18 } })
这个命令将查询年龄大于18岁的所有文档。
- 投影
可以使用投影(Projection)操作来限制查询结果中返回的字段,例如:
db.students.find({}, { name: 1, age: 1 })
这个命令将查询所有文档,但只返回姓名和年龄两个字段。
- 排序
可以使用排序(Sort)操作来对查询结果进行排序,例如:
db.students.find().sort({ age: -1 })
这个命令将查询所有文档,并按照年龄字段进行降序排序。
- 分页
可以使用分页(Pagination)操作来限制查询结果的数量,例如:
db.students.find().skip(10).limit(5)
这个命令将查询结果从第11个文档开始,返回5个文档。
- 聚合
可以使用聚合(Aggregation)操作来对文档进行统计和计算,例如:
db.students.aggregate([ { $match: { age: { $gt: 18 } } }, { $group: { _id: "$major", count: { $sum: 1 } } } ])
这个命令将查询年龄大于18岁的所有文档,并按照专业字段进行分组统计,返回每个专业的人数。
6.总结
本文介绍了MongoDB的基本概念和基本操作,包括创建数据库、创建集合、插入文档、查询文档、更新文档和删除文档等。同时也介绍了MongoDB的高级操作,包括查询条件、投影、排序、分页和聚合等。对于初学者来说,以上内容足以掌握MongoDB的基本使用。在实际应用中,还需要根据具体需求深入学习和掌握MongoDB的更多特性和用法。