MongoDB安装及基本操作

系列文章目录

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


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

文章目录

  • 系列文章目录
  • 前言
  • 一、MongoDB安装
  • 二、图形化界面
  • 三、MongoDB基本操作
    • 1. 插入文档
    • 2. 更新文档
    • 3. 删除文档
    • 4. 查询文档
    • 5. 聚合基本操作
    • 6. 索引
  • 总结


前言

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


一、MongoDB安装

二、图形化界面

三、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提供了大量能使我们快速便捷地处理数据的函数和方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/138648.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenRemote: Java 开源 IoT 物联网开发平台,匹配智慧城市、智能家居、能源管理

OpenRemote 是一个直观、用户友好的基于Java语言的开源 IoT 物联网设备管理平台&#xff0c;它包括从连接设备到构建应用程序和特定领域的智能应用程序的所有功能和特性。通过OpenRemote物联网平台&#xff0c;用户可以收集和处理来自不同设备的传感器数据&#xff0c;适用于智…

微信小程序(小程序入门)

一&#xff0c;介绍 1、什么是小程序 小程序是一种轻量级的应用程序&#xff0c;可以在移动设备上运行&#xff0c;不需要用户下载和安装。它们通常由企业或开发者开发&#xff0c;用于提供特定功能或服务。 微信小程序&#xff08;wei xin xiao cheng xu&#xff09;&#xf…

【算法练习Day22】 组合总和 III电话号码的字母组合

​&#x1f4dd;个人主页&#xff1a;Sherry的成长之路 &#x1f3e0;学习社区&#xff1a;Sherry的成长之路&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;练题 &#x1f3af;长路漫漫浩浩&#xff0c;万事皆有期待 文章目录 组合总和 III剪枝 电话号码…

力扣环形链表(1)进阶环形链表(2)及环形链表的约瑟夫问题

为了加深对环形链表的理解和掌握&#xff0c;这两道题是很不错的选择。 这里所说环形链表不是一个圈圈的结构&#xff0c;而是带环链表。 链接&#xff1a;环形链表&#xff08;1&#xff09; 注意这里链表的长度 所以要注意链表是否为空 第一种方法&#xff0c;应该是比较容易…

大数据 DataX 详细安装教程

目录 一、环境准备 二、安装部署 2.1 二进制安装 2.2 python 3 支持 三、Data X 初体验 3.1 配置示例 3.1.1. 生成配置模板 3.1.2 创建配置文件 3.1.3 运行 DataX 3.1.4 结果显示 3.2 动态传参 3.2.1. 动态传参的介绍 3.2.2. 动态传参的案例 3.3 迸发设置 …

【传输层协议】UDP/TCP结构特点与原理(详解)

文章目录 1. UDP1.1 UDP结构1.2 UDP特点1. 无连接2. 不可靠3. 面向数据报4. 缓冲区5. 大小受限6. 无序性 2. TCP2.1 TCP结构2.2 TCP特点1. 有连接2. 可靠性3. 面向字节流4. 拥塞控制5. 头部开销 2.3 TCP原理1. 确认应答&#xff08;安全机制&#xff09;2. 超时重传&#xff08…

基于springboot实现家具网站设计与实现平台项目【项目源码+论文说明】

摘要 随着移动互联网技术的深入发展&#xff0c;电子商务也不断的完善&#xff0c;线上销售额不断提高&#xff0c;网络消费成为人民日常生活的一部分。并且随着电子商务的发展&#xff0c;也呈现出多元化方向&#xff0c;各种农村电商、生鲜电商、家具电商等&#xff0c;带动…

java SpringBoot基础

目录 SpringBootWeb快速入门前言需求开发步骤创建SpringBoot工程&#xff08;需要联网&#xff09;定义请求处理类运行测试 HTTP协议HTTP概述HTTP-请求协议格式GET方式的请求协议POST方式的请求协议 HTTP-响应协议格式HTTP-协议解析 WEB服务器-Tomcat简介基本使用注意事项 Spri…

新增Node.js运行环境、新增系统缓存清理功能,1Panel开源面板v1.7.0发布

2023年10月16日&#xff0c;现代化、开源的Linux服务器运维管理面板1Panel正式发布v1.7.0版本。 在这个版本中&#xff0c;1Panel新增Node.js运行环境&#xff1b;新增系统缓存清理功能&#xff1b;应用安装时支持选择远程数据库。此外&#xff0c;我们进行了40多项功能更新和…

apk和小程序渗透

apk和小程序域服务器通信使用的还是http协议&#xff0c;只是使用了加密。只要可以获取到http的请求报文&#xff0c;就可以回归到web渗透的层面。apk和小程序的渗透很复杂&#xff0c;涉及逆向时要进行脱壳&#xff0c;脱壳后反编译了&#xff0c;源代码没做加密就能直接逆向出…

阵列信号处理_对比常规波束形成法(CBF)和Capon算法

空间谱估计 利用电磁波信号来获取目标或信源相对天线阵列的角度信息的方式&#xff0c;也称测向、波达方向估计&#xff08;DOA&#xff09;。主要应用于雷达、通信、电子对抗和侦察等领域。 发展 常规波束形成&#xff08;CBF&#xff09;。本质是时域傅里叶变换在空域直接…

排序算法-基数排序法(RadixSort)

排序算法-基数排序法&#xff08;RadixSort&#xff09; 1、说明 基数排序法与我们之前讨论的排序法不太一样&#xff0c;并不需要进行元素之间的比较操作&#xff0c;而是属于一种分配模式排序方式。 基数排序法比较的方向可分为最高位优先&#xff08;Most Significant Di…