MongoDB安装及基本操作

系列文章目录

提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:


一、MongoDB安装

mongodb4.4链接:https://pan.baidu.com/s/1q8oAMGCzVvh2qf2q2PI0cw?pwd=1234
提取码:1234

二、图形化界面

  1. Navicate for MongoDB
    Navicate百度网盘链接:https://pan.baidu.com/s/1bdNMJKC7zq59N6l1mQOzlw?pwd=1234
    提取码:1234
  2. Robo 3T/Studio 3T
    官网下载链接:https://studio3t.com/download-thank-you/?OS=win64
    百度网盘链接:https://pan.baidu.com/s/1hXEXDhYWCqBkYlHHAc4NRg?pwd=1234
    提取码:1234
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

三、MongoDB基本操作

1. 插入文档

db.people.insert({_id:1,name:"zhangsan",sex:"男",age:21})
db.people.insert({_id:2,name:"lisi",sex:"男",age:20})
db.people.insert({_id:3,name:"wangwu",sex:"女",age:20})
db.people.insert({_id:4,name:"zhaoliu",sex:"女",age:18})
db.people.insert({_id:5,name:"wuqi",sex:"男",age:19})
db.people.find()

在这里插入图片描述

_id唯一标识文档,如果文档中已经存在_id:5,此时再插入会报错

在这里插入图片描述
当然也可以使用insertMany()函数一次插入多个文档

//插入3个文档,使用insertMany()函数
db.col.insertMany([
{
   title: 'MongoDB Overview', 
   description: 'MongoDB is no sql database',
   by_user: 'runoob.com',
   url: 'http://www.runoob.com',
   tags: ['mongodb', 'database', 'NoSQL'],
   likes: 100
},
{
   title: 'NoSQL Overview', 
   description: 'No sql database is very fast',
   by_user: 'runoob.com',
   url: 'http://www.runoob.com',
   tags: ['mongodb', 'database', 'NoSQL'],
   likes: 10
},
{
   title: 'Neo4j Overview', 
   description: 'Neo4j is no sql database',
   by_user: 'Neo4j',
   url: 'http://www.neo4j.com',
   tags: ['neo4j', 'database', 'NoSQL'],
   likes: 750
}])

在这里插入图片描述

2. 更新文档

更新第一个文档,将“zhangsan”改为"zhangsanfeng"

db.people.update({_id:1},{$set:{name:"zhangsanfeng"}})

在这里插入图片描述

3. 删除文档

remove()是删除集合中所有文档,执行后仍然存在people集合

db.people.remove({})

在这里插入图片描述

而drop()是删除集合,执行后不存在people集合

db.people.drop()

在这里插入图片描述

4. 查询文档

在这里插入图片描述
4.1 查询年龄大于19岁的人数

db.people.find({age:{$gt:19}})

在这里插入图片描述
4.2 查询年龄小于等于20岁的人数

db.people.find({age:{$lte:20}})

在这里插入图片描述
4.3 AND操作

db.people.insert({_id:6,name:"lisi",sex:"男",age:20})
db.people.insert({_id:7,name:"lisi",sex:"男",age:21})
db.people.find()

在这里插入图片描述
此时有三个name="lisi"的文档,如何查找年龄为20的lisi?通过AND操作

db.people.find({name:"lisi",age:21})

在这里插入图片描述
两个key-value之间通过逗号隔开即可

4.4 OR操作
查找wangwu或者zhaoliu的信息

db.people.find({$or:[{name:"wangwu"},{name:"zhaoliu"}]})

在这里插入图片描述
注意OR和AND的区别,OR两个key-value之间是用{}分开的。

5. 聚合基本操作

//1. 统计男生、女生的总年龄
db.people.aggregate([
{$group:{_id:"$sex",age_sum:{$sum:"$age"}}}
])

在这里插入图片描述

//2.统计男生女生的总人数
db.people.aggregate([
{$group:{_id:"$sex",people_sum:{$sum:1}}}
])

在这里插入图片描述
$sum:1表示统计总数,比如男为3位,女为2位

//3.求学生总数和平均年龄
db.people.aggregate([
{$group:{_id:null,people_sum:{$sum:1},
avg_age:{$avg:"$age"}}}
])

在这里插入图片描述

//4.查询男生、女生人数,按人数升序
db.people.aggregate([
{$group:{_id:"$sex",people_sum:{$sum:1}}},
{$sort:{people_sum:1}}
])

在这里插入图片描述
$sort中,1为升序,-1为降序

//5.先按性别分组,分完组之后将age属性映射到数组中:
db.people.aggregate([
{$group:{_id:"$sex",num:{$push:"$age"}}}
])

在这里插入图片描述

6. 索引

什么是索引?为什么需要索引?
相当于书的目录,减少查询时间

//插入10万条数据对比索引优点
for(var i=0;i<100000;i++)
db.col2.insert({name:'a',time:i})
db.col2.find()

在这里插入图片描述
5.1 不使用索引查询time:100-20000间的数据耗时29ms

db.col2.find({time:{$gt:100,$lt:20000}}).explain("executionStats")

在这里插入图片描述
5.2 创建索引后再来查询
创建索引

db.col2.createIndex({time:1})

在这里插入图片描述
5.3 查询索引

db.col2.getIndexes()

在这里插入图片描述
5.4 删除索引

db.col2.dropIndex("time_1")

在这里插入图片描述
此时time_1索引已被删除,最好是退出后重新查询,可以看到耗时0毫秒

db.col2.find({time:{$gt:100,$lt:20000}}).explain("executionStats")

在这里插入图片描述
5.5 索引几种类型

5.5.1 组合(复合)索引
同时创建两个及以上索引

db.col2.createIndex({"name":1,"time":-1})

在这里插入图片描述
5.5.2 多值索引

db.col3.insert({name:"lisi",tag:["a","b","c"]})
db.col3.createIndex({tag:1})
db.col3.find({tag:"b"})

在这里插入图片描述
5.5.3 全文索引

db.col3.createIndex({"name":"text"})

在这里插入图片描述

  1. 索引

  2. 创建索引

  3. 查看


总结

以上就是今天要讲的内容,本文仅仅简单介绍了mongoDB的使用,而mongoDB提供了大量能使我们快速便捷地处理数据的函数和方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值