MongoDB的基础使用操作
作者:championsky | 发布时间:
图文讲解
1. 常用操作命令
常用的操作MongoDB数据库的相关命令包括:
(1)show dbs:显示数据库列表;
(2)show collections:显示当前数据库中的集合(类似关系数据库中的表table);
(3)show users:显示所有用户;
(4)use yourDB:切换当前数据库至yourDB;
(5)db.help() :显示数据库操作命令;
(6)db.yourCollection.help() :显示集合操作命令,yourCollection是集合名;
MongoDB没有创建数据库的命令,如果要创建一个名称为“School”的数据库,需要先运行“use School”命令,之后做一些操作,比如,使用命令“db.createCollection('teacher')”创建集合,这样就可以创建一个名称为“School”的数据库。
2.简单操作演示
下面以一个School数据库为例进行操作演示,将在School数据库中创建两个集合teacher和student,并对student集合中的数据进行增、删、改、查等基本操作。需要说明的是,文档数据库中的集合(Collection),相当于关系型数据库中的表(table)。
(1)切换到School数据库
命令如下:
> use School
注意,MongoDB无需预创建School数据库,在使用时会自动创建。
(2)创建集合
创建集合(Collection)的命令如下:
> db.createCollection('teacher')
执行上述命令的屏幕截图如图20所示。
图20 创建集合
实际上,MongoDB在插入数据的时候,也会自动创建对应的集合,无需预定义集合。
(3)插入数据
插入数据的具体命令如下:
> db.student.insertOne({_id:1, sname: 'zhangsan', sage: 20}) #_id可选
运行完以上命令,student已自动创建,这也说明MongoDB不需要预先定义集合(collection),在第一次插入数据后,集合会被自动创建。此时,可以使用“show collections”命令查询数据中当前已经存在的集合,如图21所示。
图21 show collections命令执行结果
(4)查找数据
查找数据所使用的基本命令格式如下:
> db.youCollection.find(criteria, filterDisplay)
其中,criteria表示查询条件,是一个可选的参数;filterDisplay表示筛选显示部分数据,如显示指定某些列的数据,这也是一个可选的参数,但是,需要注意的是,当存在该参数时,第一个参数不可省略,若查询条件为空,可用{}做占位符。
(a)查询所有记录
> db.student.find()
该命令相当于关系数据库的SQL 语句“select * from student”。
(b)查询sname='zhangsan'的记录
> db.student.find({sname: 'zhangsan'})
该命令相当于关系数据库的SQL 语句“select * from student where sname='zhangsan'”。
(c)查询指定列sname、sage数据
> db.student.find({},{sname:1, sage:1})
该命令相当于关系数据库的SQL 语句“select sname,sage from student”。其中,sname:1 表示返回sname列,默认_id字段也是返回的,可以添加_id:0 (意为不返回_id),写成{sname: 1, sage: 1,_id:0 },就不会返回默认的_id字段了。
(d)AND条件查询
> db.student.find({sname: 'zhangsan', sage: 20})
该命令相当于关系数据库的SQL 语句“select * from student where sname = 'zhangsan' and sage = 20”。
(e)OR条件查询
> db.student.find({$or: [{sage: 20}, {sage: 25}]})
该命令相当于关系数据库的SQL 语句“select * from student where sage = 22 or sage = 25”。
(5)修改数据
修改数据的基本命令格式如下:
> db.youCollection.updateOne(criteria, objNew, upsert, multi )
对于该命令做如下说明:
(1)criteria:表示update的查询条件,类似sql update查询内where后面的条件;
(2)objNew : update的对象和一些更新的操作符(如$set)等,也可以理解为SQL语句中的update语句中的set后面的内容。
(3)upsert : 如果不存在update的记录,是否插入objNew,true表示插入,默认是false,表示不插入。
(4)multi: MongoDB默认是false,只更新找到的第一条记录,如果这个参数为true,就会把按条件查出来的多条记录全部更新。默认是false,只修改匹配到的第一条数据。
上面各个参数中,其中criteria和objNew是必选参数,upsert和multi可选参数。
这里给出一个实例,语句如下:
> db.student.updateOne({sname: 'zhangsan'}, {$set: {sage: 22}}, false, true)
该命令相当于关系数据库的SQL 语句“update student set sage =22 where sname = 'zhangsan';”。执行该命令的屏幕截图如图22所示。
图22 修改数据
(6)删除数据
> db.student.remove({sname: 'zhangsan'})
该命令相当于关系数据库的SQL 语句“delete from student where sname='chenliu'”。
执行该命令过程的屏幕截图如图23所示。
图23 删除数据
(7)删除集合
> db.student.drop()
四、使用Python操作MongoDB
Python要连接MongoDB需要MongoDB驱动,这里我们使用pymongo驱动来连接MongoDB。打开一个cmd窗口,执行如下命令在Python中安装pymongo模块(如图24所示):
>pip install pymongo -i https://pypi.tuna.tsinghua.edu.cn/simple

图24 安装pymongo
1.测试数据库是否存在
打开IDLE,新建一个Python文件,输入如下代码:
- import pymongo
- myclient = pymongo.MongoClient('mongodb://localhost:27017/')
- dblist = myclient.list_database_names()
- if "School" in dblist:print("数据库已存在!")
执行上述代码,就可以验证数据库是否存在。
2.查询某集合下的第一条数据
在MongoDB Shell中执行如下命令创建集合并插入一条数据:
> use School
> db.student.insertOne({_id:1, sname: 'zhangsan', sage: 20})
新建一个Python文件,输入如下代码:
- import pymongo
- myclient = pymongo.MongoClient("mongodb://localhost:27017/")
- mydb = myclient["School"]
- mycol = mydb["student"]
- record = mycol.find_one()
- print(record)
执行上述代码,就可以查询得到集合student下的第一条数据。