一、下载安装
如果不嫌弃版本太老的话,这有一个安装包。链接:https://pan.baidu.com/s/1IN9H-HyOKnO3hwzm47i0wA 提取码:q621
二、基本结构
三、基本操作
使用前准备
1、储存数据:新建一个文件夹
2、开启服务:打开cmd执行 mongod --dbpath 文件夹名
3、管理数据库:新打开cmd(步骤2的cmd不要关),输入mongo(或mongo 127.0.0.1:27017)使用本地去管理
创建与插入数据
1、创建数据库:use itying ,itying为自定义数据库名称,如果不给数据库添加新集合,数据库不会创建成功
2、创建一个集合并插入一条数据:db.user.insert({“name”:”xiaoming”}), user为自定义集合名称,数据以名值对方式存储。重复2操作可以往一个集合中添加多条数据,双引号对数字来说可加可不加。
查询数据
1、但凡涉及到操作数据库的,都要先use itying
2、查询所有数据库:show dbs
3、查询某个数据库的所有集合名:use itying 、show collections
4、查询某个集合的所有数据:use itying、itying.user.find()
5、精确查询数据:use itying、itying.user.find({"name":"zhangsan", "age":22}) 逗号为且查询,name为zhangsan且age为22
6、模糊查询数据:use itying、itying.user.find({"name":/san/}),但凡name属性值带san的都会被匹配上,模糊查询的内容不要加双引号(无论是中文英文数字)
7、查询一定范围的数据:use itying、itying.user.find({"age":{$gte:22, $lte:33}}),查询age在[22, 33]区间的所有数据。范围查询有好多格式,具体看pdf。
8、查询数据并排序:db.user.find({}).sort({"age":1}),1按照age升序排序,-1按照降序排序
9、查询前几条数据:db.user.find().limit(3),这个功能一般用来做首页内容展示
10、查询指定位置数据:db.user.find().skip(2).limit(4),跳过前两条数据,从第三条开始查询4个数据,也就是查询第3条到第6条的数据
11、或查询:db.user.find({$or:[{"age":"20"},{"age":"22"}]}),age为20或22
12、查询数量:db.user.find({"age":{$gt:"22"}}).count(),age大于22的数据的数量
修改和删除数据
1、删除集合:db.user.drop(),删除成功true,若该集合不存在删除失败为false
2、删除数据库:当数据库中的集合全部删除后,数据库跟着被删除,可用show dbs查看
3、修改数据:db.user.update({"name":"hj"},{$set:{"age":50}}),前面为查询数据的筛选条件,后面是修改内容,表示将hj的age改为50。
如果不写$set: ,表示全部替换掉这条数据,如:db.user.update({"name":"hj", "age": 22},{"age":50}),本来这个数据有name、age或者其它属性,现在只有一个age=50的属性了。
4、删除数据:db.user.remove({"age":{$gt: 20})),删除大于20的数据。
索引和执行时间
普通索引
1、查看是否有索引:db.user.getIndexes()
2、给数据设置索引:db.user.ensureIndex({"num":1}),给所有的num批量设置索引,这样单独查询num时会非常快
3、获取数据索引:db.user.getIndexes()
4、删除索引:db.user.dropIndex()
复合索引
5、复合索引:db.user.ensureIndexes({"name":"hj", "age":22}),这样在同时查询name和age时会很快,单独查询age速度不变,除非给age单独设置普通索引
6、唯一索引:db.user.ensureIndex({"name":"hj"},{"unique":true}),唯一索引不允许数据重复
7、查看一个任务的执行时间:.explain("executionStats"),如:db.user.find({"num":26438}).explain("executionStats"),找到num=26438这条数据的时间,在输出内容找到executionTimeMillis即为执行毫秒数。