mongoDB 使用

mongodb 使用

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

MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

非关系型数据库,又叫nosql,缓存型,使用场景多是解决大规模数据集合多重数据种类

特点

高性能、易部署、易使用,存储数据非常方便

在 Windows 系统上安装

  • 下载

https://www.mongodb.com/download-center/community

List item

  • 安装配置
    选择你要存储的位置
  • 安装好之后,找到对应目录,找到 bin 点进去,把地址复制去到此电脑环境变量的 path 里新建一条粘贴进去保存就可以了
  • 还要找安装的目录里面手动的新建一个文件夹为 data ,再在 data 文件夹里面新建一个 db 的文件夹把 db 文件的路径复制下来
  • 打开 DOS 输入:

mongod --dbpath 右击粘贴刚才复制的地址(回车就可以了)

如果你是安装在 c盘(其他盘也一样)的话一定要注意你的地址是否存在空格
如果存在空格的话一定要给地址添加双引号("")引起来

  • 把刚刚的 DOS 最小化,再开一个 DOS 输入:

mongo (回车如果显示版本号就是成功了)

在 mac 系统上安装(小编使用的是window ,只能在这简单说一下,也可以参考一下面的这篇文章)

https://www.cnblogs.com/whitebai/archive/2019/10/15/11680744.html

在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 集合

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

MongoDB 文档

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

数据库常用命令

(1)Help查看命令提示
help
db.help()
db.test.help()
db.test.find().help()
(2)创建/切换数据库
use music
(3)查询数据库
show dbs
(4)查看当前使用的数据库db/db.getName()
(5)显示当前DB状态
db.stats()
(6)查看当前DB版本
db.version()
(7)查看当前DB的链接机器地址
db.getMongo()
(8)删除数据库
db.dropDatabase()

Collection集合操作

(1)创建一个集合

db.createCollection(“collName”, {size: 20, capped: true, max: 100});
db.collName.isCapped(); //判断集合是否为定容量

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

db.getCollection(“account”);

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

db.getCollectionNames();

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

db.printCollectionStats();

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

(1)添加

db.users.save({name: ‘zhangsan’, age: 25, sex: true});
db.users.insert({name: ‘zhangsan’, age: 25, sex: true})

添加多条
db.users.insert([
{“username”:“小王”,age:18,“adress”:“湖南”},
{“username”:“小明”,age:19,“adress”:“广东”},
{“username”:“小李”,age:18,“adress”:“四川”},
{“username”:“小丽”,age:20,“adress”:“武汉”},
{“username”:“小红”,age:21,“adress”:“湖北”}
])

(2)修改

db.users.update({age: 25}, {$set: {name: ‘changeName’}}); 相当于:update
users set name = ’ changeName’ where age = 25;

(3)删除

db.users.remove({age: 132});

集合数据查询

(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 whereage > 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数据

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;

侵权联删

家中逆战,无畏疫情!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值