安装
- windows
在官网下载与系统相对应的版本即可 - Linux用户
1.直接使用apt/apt-get/yum install mongodb
服务即可。
2.也可自行下载压缩文件,自行解压即可使用。
启动
- windows
命令行中运行:c:\mongodb\bin\mongod --dbpath d:\data\db
其中mogod启动程序根据我们的安装路径确定,dpath参数是我们数据集所存放的路径,即我们采集或者手动插入的数据所存储的路径,这样我们的服务端就启动完毕。 - Linux
直接在终端输入service mongodb start
启动即可,如果需要远程连接的话需要在/etc/mongodb.conf配置文件中修改我们的绑定地址,端口号也可根据需求更改,在防火墙策略中将对应的端口开放即可,云服务器上再安全策略中将端口开放。
连接
命令行中输入mongo
即可进入MongoDB客户端,如果通过程序访问数据库一定要设置端口号,退出exit
。
操作
1.查看数据库show databases
或 show dbs
2.使用/创建数据库use test
当进入一个不存在的数据库即创建一个数据库,例如use mldn
此时创建了一个新的数据库,但是当你show dbs
时并不会出现,mongdb真正创建这个库是在你库里面创建一个集合或者插入一条数据的时候。
3.db.createCollection("emp")
创建一个集合,在mysql中数据库中存放的是表,在mongodb中我们叫它集合,换汤不换药,理解一哈就行,mysql中表中存放的是一行一行的数据,在mogodb中我们叫文档,名字不重要,知道有这么个东西就OK。
4.show collections
查看所有集合
5db.emp.insert({"deptno":10,"dname":"财务部","loc":"北京"})
向集合中插入一条数据
6.db.emp.find()
查看集合中数据
7.db.集合.drop
删除一个集合
8.删除一个数据库,需要use 数据库名
,而后执行db.dropDatabase()
操作
9.条件查询,测试数据
db.student.insert({"name":"李四","sex":"男","age":19,"score":89})
db.student.insert({"name":"赵五","sex":"男","age":19,"score":89})
db.student.insert({"name":"钱六","sex":"男","age":16,"score":89})
db.student.insert({"name":"张七","sex":"男","age":17,"score":89})
db.student.insert({"name":"张八","sex":"男","age":18,"score":89})
db.student.insert({"name":"张一","sex":"男","age":19,"score":89})
db.student.insert({"name":"张二","sex":"男","age":20,"score":89})
db.student.insert({"name":"张十","sex":"男","age":21,"score":89})
db.student.insert({"name":"张九","sex":"男","age":19,"score":89})
(使用pretty()方法是为了美化查询结果数据,方便查看)
-
查询成绩大于60分的同学信息:
db.student.find({"score":{"$gt":60}}).pretty()
-
逻辑运算与($and)、或($or)、非($not\$nor))($nor针对或取反操作)
查询年龄在19-20岁的学生信息db.student.find({"age":{"\$gte":19,"\$lte":20}).pretty()
查询年龄不是19岁得学生信息db.student.find({"age":{"\$ne":19}}).pretty()
查询年龄大于19岁,或者成绩大于90分的学生信息db.student.find({"\$or":[{"age":{"\$gt":19}},{"scor":{"\$gt":90}}]})
或的连接需要设置一个数组来设定过滤条件 -
范围查询($in$nin)
查询姓名是张三、李四、赵五得信息db.student.find({"name":{"\$in":["张三","李四","赵五"]}}).pretty()
不在范围的查询db.student.find({"name":{"\$nin":["张三","李四","赵五"]}}).pretty()
- 数据分页显示
- skip(n) 表示数据跨过多少行
- limit(n)取出数据行的个数限制
db.hero_list.find().skip(10).limit(3)
分页显示db.infos.find().skip(0).limit(5).pretty()
- 删除数据
使用remove
删除条件:满足删除条件得删除,是否只删除一个数据,如果设置为true
或1
表示只删除一个数据
范例:删除所有姓名带有张字的同学信息db.student.remove({"name":/张/})
db.student.remove({"name":/张/},true)
清空所有数据操作db.student.remove({})