问题:mongodb作为一种非关系型数据库,有别于MySQL关系型数据库
Linux下的安装参考
windows下,图形化界面,不解释
1,启动:启动服务器和客户端在两个操作系统下基本一致
以下是已经配置环境变量,如果没有配置环境变量需要进入到,安装目录/bin,目录下
启动服务器:
mongodb --dbpath=安装路径\data\db #windows下
sudo ./mongodb --dbpath=安装路径\data\db #linux下
启动客户端:
mongo
2,和SQL的对比
3,数据库操作(database)
查看数据库:show dbs 或者 show databases(如果数据库中没有数据则不会显示)
创建或切换数据库:use 数据库名 (没有的话会创建)
查看当前use的数据库:db
删除数据库:db.dropDatabase()
4,集合操作(collection)
查看集合:show collections
创建一个集合:db.createCollection("集合名")
db.集合名.insert({数据}) 没有这个集合就会创建
删除一个集合:db.集合名.drop()
5,文档操作(document)
(1)插入数据
1.1插入一条数据:db.集合名.insert({key:value,key:value})
1.2插入多条数据:db.集合名.insert([{key:value},{key:value}..])
与db.集合名.save({}) 的区别:
如果使用的是save,而且设置_id属性,且_id已经存在时, 此时save表示修改数据
如果使用的是insert,而且设置_id属性,且_id已经存在时, 则insert会报错
(2)查询数据
查询所有数据:db.集合名.find()
指定条件查询:db.集合名.find(query,names)
query参数 如: {age:76} 表示查询age = 76的数据
names参数 如: {name:1,age:1} 表示只显示name属性和age属性,1表示显示,默认不显示
查询一条数据:db.集合名.findOne(query,names)
格式化查询:db.集合名.find().pretty()
(3)数据的修改
格式:db.集合名.update(query,set,{upsert:布尔类型,multi:布尔类型})
query 查询条件
set 要修改的属性和对应的属性
upsert 表示在修改数据的时候,如果查询条件没有找到对应的数据,
是否将修改的内容当作新的数据添加到集合中
true 表示添加进来
false 表示不当作新数据添加进来
默认是false
multi 表示在修改数据的时候,如果查询出了多条符合条件的数据,是否将多条数据全部进行修改
true 表示全部都修改
false 表示值修改匹配的第一条数据
默认是false
(4)删除数据:db.集合名.remove(query,{justOne:布尔值}
6,查询条件
运算符:作为键key存在
1,条件运算符
$gt,$lt , $eq , $ne , $gte ,$lte
年龄大于40小于60: db.student.find({age:{$gte:40,$lte:60}})
2,逻辑运算符
and or not
年龄大于40小于60:db.student.find({$and:[{age:{$gte:40}},{age:{$lte:60}}]})
3,模糊运算符: / /
以什么开头:db.student.find({name:/^习/})
包含:db.student.find({name:/胖/})
7,分页:db.student.find().skip(3) db.student.find().limit(3)
limit(n) :表示显示n条
skip(n) :表示从n条显示
8,排序: db.student.find().sort({字段名:1/-1}) 1: 表示升序 -1: 降序
9,计算查询结果的数量 : db.student.find().count()