MongoDB数据库的安装及用法

MongoDB

windows下 下载MongoDB

www.mongodb.org/downloads

https://mongoose.kkfor.com/ 中文文档

shell(计算机壳层)

在计算机科学中,Shell俗称壳(用来区别于核),是指“提供使用者使用界面”的软件(命令解析器)。它类似于DOS下的command.com和后来的cmd.exe。它接收用户命令,然后调用相应的应用程序。

在Mac系统上安装

一、安装

在Mac OS上面安装MongoDB,你可以通过编译源代码来安装 ,也可以在Mac OS上使用Homebrew安装。 使用Homebrew安装MongoDB:

brew update brew install mongodb

二、启动MongoDB

mongod --config /usr/local/etc/mongod.conf

三、MongoDB命令行管理 shell

mongo

四、MongoDB是什么

MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。

它的特点:高性能、易部署、易使用,存储数据非常方便。

五、MongoDB术语/概念

mySQL和 MongoDB 存储数据对比。MongoDB属于noSQL数据库(有兴趣的同学可以自行查阅不同种类的数据库的区别)。

【注】MongoDB存储方式类似json格式的字符串。

六、介绍 MongoDB 数据库

  1. 一个mongodb中可以建立多个数据库。
  2. MongoDB的默认数据库为"db",该数据库存储在data目录中。
  3. MongoDB的单个实例可以容纳多个独立的数据库,每一个都有自己的集合和权限,不同的数据库也放置在不同的文件中。

七、MongoDB 集合

  1. 集合就是 MongoDB 文档组,类似于 RDBMS (关系数据库管理系统:Relational Database Management System)中的表格。
  2. 集合存在于数据库中,集合没有固定的结构,这意味着你在对集合可以插入不同格式和类型的数据,但通常情况下我们插入集合的数据都会有一定的关联性。

八、MongoDB 文档

  1. 文档是一个键值(key-value)对(即BSON)。MongoDB 的文档不需要设置相同的字段,并且相同的字段不需要相同的数据类型,这与关系型数据库有很大的区别,也是 MongoDB 非常突出的特点。
  2. 一个简单的文档例子如下: {"genres": ["犯罪","剧情" ],"title": "肖申克的救赎"}

九、MongoDB 数据类型

十、数据库常用命令

(1)Help查看命令提示

help db.help() db.test.help() db.test.find().help()

(2)创建/切换数据库,如果不存在会创建,如果存在会切换到这个数据库。

创建数据库并不会真的存在,只有在其中插入数据,才会创建数据库成功。

use music

(3)插入数据

db.albums.insertOne({"title": "再见理想"})

(4)查询数据库

show dbs

(5)查看当前使用的数据库

db/db.getName()

(6)显示当前DB状态

db.stats()

(7)查看当前DB版本

db.version()

(8)查看当前DB的链接机器地址

db.getMongo()

(9)删除数据库

db.dropDatabase()

十一、Collection集合操作

(1)创建一个集合

db.createCollection(name, options) // 因为 MongodbDB 在第一次引用时会隐式地创建这个 collection。这个方法主要是使用指定的 options 创建一个新的 collection。 
// 例如,你使用 db.createCollection() 创建一个 capped collection 或者创建一个新的集合 document validation 。

db.createCollection("log", { capped : true, size : 5242880, max : 5000 } ) //这个命令创建名字为“log”,最大存储空间为 5m,最多 5000 个文档的集合 db.log.isCapped(); //判断集合是否为定容量

(2)得到指定名称的集合

db.getCollection("account");

(3)得到当前db的所有集合

db.getCollectionNames();

(4)显示当前db所有集合的状态

db.printCollectionStats();

十二、添加、修改与删除集合数据

(1)添加

db.albums.insertOne({title:"再见理想"}) //插入一条记录 
db.albums.insertMany([{title:"旧日足迹"},{title:"寻梦环游记"}]) //插入多条记录 
db.albums.insert([{title:"光辉岁月"},{title:"阳光灿烂的日子"}]) //当然也可以直接通过insert插入数据

//当然也可以通过save插入数据 
db.users.save({name: 'zhangsan', age: 25, sex: true});

(2)修改

db.albums.updateMany({},{$set:{artist: "Beyond"}}) 
db.albums.updateOne({title:"寻梦环游记"},{$set:{artist: "王力宏"}}) 
db.users.update({age: 25}, {$set: {name: 'changeName'}}, false, true);

相当于:update users set name = ' changeName' where age = 25;

【注】其中第一个布尔值,代表如果没有找到该条件,是否插入一条数据。为true插入。

【注】第二个布尔值,代表是否要更新全部符合条件的数据,如果为true,更新所有符合条件的数据,为false只更新第一条找到的数据。

db.users.update({name: 'Lisi'}, {$inc: {age: 50}}, false, true);

相当于:update users set age = age + 50 where name = 'Lisi';

db.users.update({name: 'Lisi'}, {$inc: {age: 50}, $set: {name: 'hoho'}}, false, true);

相当于:update users set age = age + 50, name = 'hoho' where name = 'Lisi';

(3)删除 deleteOne(删除一条) deleteMany(删除多条) remove

第一个布尔值:代表是否删除一条记录,如果为true,只删除找到的第一条记录,默认是false

db.users.remove({age: 132},true); db.albums.remove({}) //删除所有

十三、集合数据查询(一)

(1)查询所有记录

db.userInfo.find(); 相当于:select* from userInfo;

(2)查询去重后数据

db.userInfo.distinct("name"); 相当于:select distict name from userInfo;

(3)查询age = 22的记录

db.userInfo.find({"age": 22}); 相当于: select * from userInfo where age = 22;

(4)查询age > 22的记录

db.userInfo.find({age: {$gt: 22}}); 相当于:select * from userInfo where age > 22;

(5)查询age < 22的记录

db.userInfo.find({age: {$lt: 22}}); 相当于:select * from userInfo where age < 22;

(6)查询age >= 25的记录

db.userInfo.find({age: {$gte: 25}}); 相当于:select * from userInfo where age >= 25;

(7)查询age <= 25的记录

db.userInfo.find({age: {$lte: 25}});

(8)查询age >= 23 并且 age <= 26

db.userInfo.find({age: {$gte: 23, $lte: 26}});

(9)查询name中包含 mongo的数据

db.userInfo.find({name: /mongo/}); //相当于%% select * from userInfo where name like '%mongo%';

(10)查询name中以mongo开头的

db.userInfo.find({name: /^mongo/}); 相当于: select * from userInfo where name like 'mongo%';

集合数据查询(二)

(11)查询指定列name、age数据

【注】如果想显示数据就将后面的数字写成1,不想显示就将后面的数字写成0

db.userInfo.find({}, {name: 1, age: 1}); 相当于:select name, age from userInfo;

(12)查询指定列name、age数据, age > 25

db.userInfo.find({age: {$gt: 25}}, {name: 1, age: 1}); 相当于:select name, age from userInfo where age >25;

(13)按照年龄排序

升序:

db.userInfo.find().sort({age: 1});

降序:

db.userInfo.find().sort({age: -1});

(14)查询name = zhangsan, age = 22的数据

db.userInfo.find({name: 'zhangsan', age: 22});

相当于:select * from userInfo where name = 'zhangsan' and age = ’22';

(15)查询前5条数据

db.userInfo.find().limit(5);

相当于:select top 5 * from userInfo;

集合数据查询(三)

(16)查询10条以后的数据

db.userInfo.find().skip(10);

相当于:select * from userInfo where id not in (select top 10 * from userInfo);

(17)查询在5-10之间的数据

db.userInfo.find().limit(10).skip(5);

(18)or与 查询

db.userInfo.find({$or: [{age: 22}, {age: 25}]});

相当于:select * from userInfo where age = 22 or age = 25;

(19)查询第一条数据

db.userInfo.findOne();

相当于:select top 1 * from userInfo;db.userInfo.find().limit(1);

(20)查询某个结果集的记录条数

db.userInfo.find({age: {$gte: 25}}).count();

相当于:select count(*) from userInfo where age >= 20;

最后我们可以通过一个实例来练习一下

获取数据 https://api.douban.com/v2/movie/top250

db.movies.find({year:"1994"},{title:1,year:1,_id:0}) //显示评分 
db.movies.find({},{title:1,year:1,"rating.average":1,_id:0}) //返回当前记录的条数 
db.movies.find({},{title:1,year:1,"rating.average":1,_id:0}).size() //设置只显示10条数据 
db.movies.find({},{title:1,year:1,"rating.average":1,_id:0}).limit(10) //跳过十条以后的数据 
db.movies.find({},{title:1,year:1,"rating.average":1,_id:0}).skip(10) //跳过两条数据显示三条 
db.movies.find({},{title:1,year:1,"rating.average":1,_id:0}).skip(2).limit(3) //按照评分的升序进行排序 
db.movies.find({},{title:1,year:1,"rating.average":1,_id:0}).sort({"rating.average":1}) //按照评分的降序进行排序 
db.movies.find({},{title:1,year:1,"rating.average":1,_id:0}).sort({"rating.average":-1}) //设置查找评分大于9.6的电影 
db.movies.find({"rating.average":{$gt:9.5}},{title:1,"ration.average":1,_id:0}) //查询犯罪类型的电影 
db.movies.find({genres:{$in:["犯罪"]}}, {title:1,genres:1,_id:0}) //查询犯罪和剧情类型的电影 
db.movies.find({genres:{$in:["犯罪","剧情"]}}, {title:1,genres:1,_id:0}) //查询不包含犯罪和剧情类型的电影 
db.movies.find({genres:{$nin:["犯罪","剧情"]}}, {title:1,genres:1,_id:0})

这就是我们功能强大的MongoDB

猜你喜欢

转载自blog.csdn.net/zrexam/article/details/87269163