MongoDB的一些基本使用
何为MongoDB:
MongoDB是一个基于分布式文件存储的数据库,是一个介于关系数据库和非关系数据库之间的产品,是非关系型数据库中功能最丰富,最像关系型数据库的。旨在为Web应用提供可扩展的高性能数据存储解决方案。
MongoDB将数据存储为一个文档,数据结构由键值对(key=>value)组成,MongoDB文档类似于JSON对象,字段值可以包含其它文档、数组及文档数组。结构如下所示:
{_id: ObjectId{"1234567890aabbcc"},title: "初学MongoDB心得",author: "范海彪",favorites: ["敲代码", "学习", "听音乐"]
}
MongoDB一些基本概念:
MongoDB术语 |
SQL术语 | 说明 |
database | database | 数据库 |
collection | table | 集合/数据库表 |
document | row | 文档/数据记录行 |
field | column | 域/数据字段 |
index | index | 索引 |
primary key | primary key | MongoDB中 _id 的域为主键/主键 |
基本使用:
一、数据库操做
1、创建数据库:
use DATABESE_NAME 如果数据库存在即为切换,不存在即为创建;
2、删除数据库:
db.dropDatabase() 删除当前使用的数据库;
3、查看数据库:
show dbs
二、集合操做
1、创建集合:
1、db.createCollection(COLLECTION_NAME, options) options:可选择的参数;
2、db.COLLECTION_NAME.insert(document)
2、删除集合:
db.COLLECTION_NAME.drop()
3、查看集合:
show collections
三、文档操作
1、插入文档:
方法 | 说明 | |
db.COLLECTION_NAME. |
insert(document) | 插入单条 |
insertOne(document) | 插入单条 | |
insertMany([document, document]) | 插入多条 |
2、查询文档:
方法 | 说明 | |
db.COLLECTION_NAME. | find() | 查询全部 |
find(query, projection) | 查询全部符合条件 | |
findOne(query, projection) | 查询第一条符合条件 |
query:查询条件
操做 | 格式 | 示例 | RDBMS表示 |
等于 | { : } | db.col.find({age : 18}) | where age = 18 |
大于 | { : {$gt : }} | db.col.find({age : {$gt : 18}}) | where age > 18 |
大于等于 | { : {$gte : }} | db.col.find({age : {$gte : 18}}) | where age >= 18 |
小于 | { : {$lt : }} | db.col.find({age : {$lt : 18}}) | where age < 18 |
小于等于 | { : {$lte : }} | db.col.fing({age : {$lte : 18}}) | where age <= 18 |
不等于 | { : {$ne : }} | db.col.find({age : {$ne : 18}}) | where age != 18 |
类型 | { : {$type : }} | db.col.find(name : {$type : 2}) | 查找name为String类型 |
操做 | 示例 | RDBMS表示 |
AND | db.col.find({age : 18, name : "张三"}) | where age = 18 and name = "张三" |
OR | db.col.find({$or : [{age : 18}, {name : "张三"}]}) | where age = 18 or name = "张三" |
联合使用 | db.col.find({age : 18, $or : [{name : "张三"}, {name : "李四"}]}) |
where age = 18 and ( name = "张三" or name = "李四" ) |
projection:可选值,用来指定返回值,未指定时默认返回所有字段。
db.col.find({age : 18}, {age : 1, name : 1, _id : 0}),返回age和name字段,_id不设置为0时默认返回。
pretty():查询结果格式化。
3、删除文档:
方法 | 说明 | |
db.COLLECTION_NAME. | deleteOne(query) | 删除匹配的第一条 |
deleteMany(query) | 删除匹配的所有记录 | |
deleteMany({}) | 删除全部记录 |
4、修改文档:
方法 | 说明 | |
db.COLLECTION_NAME. | update(query, update, upsert, multi) | 更新查找到的记录 |
save(document) | 判断document的_id主键是否存在,存在即更新,不存在即插入。 |
update:相当于SQL中set后的语句;示例:
db.col.update({age : 18}, {$set : {name : "张三"}}, false, true)
即:update col set name = "张三" where age = 18
upsert:可选值,表示要修改的文档不存在时是否新插入。默认false,不插入。
multi:可选值,默认false,只更新匹配的第一条。
5、Limit和Skip:
db.COLLECTION_NAME.find(query).limit(NUM) 读取指定记录数;
db.COLLECTION_NAME.find(query).skip(NUM) 跳过读取指定记录数。
6、排序
db.COLLECTION_NAME.find(query).sort({ : 1}) 根据给定的key值排序,1为升序,-1为降序。
7、索引
索引是一种特殊的数据结构,存储在一个易于遍历读取的集合中,是对数据库表中一列或多列的值进行排序的一种结构,通常能够极大的提高查询效率,在没有索引时,MongoDB读取数据时需要扫描全部文档并进行选择,效率低下。
方法 | 说明 | |
db.COLLECTION_NAME. | createIndex(keys, options) | 创建索引 |
getIndexes() | 查看索引 | |
totalIndexSize() | 查看索引大小 | |
dropIndexes() | 删除所有索引 | |
dropIndex("索引名") | 删除指定索引 |
keys:创建索引的字段,1为升序,-1为降序;
options:可选值,设置索引的属性。示例:
db.col.createIndex({price : 1, sale : -1}, {background : true})
db.col.dropIndex("age_1")
8、聚合
MongoDB的聚合操做类似于ElasticSearch的聚合操做,主要用来对数据进行处理分析。
db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)
聚合表达式 | 说明 |
$sum | 计算总和 |
$avg | 计算平均值 |
$min | 获取最小值 |
$max | 获取最大值 |
$push | 在结果文档中插入值到一个数组中 |
$addToSet | 在结构文档中插入值到一个数组中,不创建副本 |
$first | 根据排序获取第一条文档 |
$last | 根据排序获取最后一条文档 |
管道操作符 | 说明 |
$project | 修改输入文档结构,可重命名、增加或删除域 |
$match | 过滤数据 |
$limit | 指定获取聚合管道返回的文档数 |
$skip | 跳过聚合管道返回的指定文档数,获取剩余的文档 |
$unwind | 将文档中某一数组类型拆分成多条,每条包含一个值 |
$group | 分组操作,进行统计 |
$sort | 将输入文档排序后输出 |
$geoNear | 输出接近某一地理位置的文档 |
示例:
1、根据age分组,并统计数量:
db.col.aggregate({$group : {_id : "$age", num : {$sum : 1}}})
2、只保留age和name字段:
db.col.aggregate({$project : {_id : 0, age : 1, name : 1}})
3、获取 age = 18 的前 10 个文档,只保留age、name和_id字段:
db.col.aggregate([{$project : {age : 1, name : 1}}, {$match : {age : 18}}, {$limit : 10}])
MongoDB的一些基本使用相关推荐
- windows安装MongoDB环境以及在pycharm中配置可视化插件
安装MongoDB数据库 参考这里 安装PyMongo python3 -m pip3 install pymongo指定版本 python3 -m pip3 install pymongo==3.5 ...
- SQL与NoSQL的区别 以MySQL与MongoDB为例
异同对比 1.语言和结构层面 SQL数据库,是基于表的,并且用结构化语言也就是SQL来定义和操纵数据.一方面,这是非常强大的:SQL是最通用和最广泛使用的选项之一,使其成为一个安全的选择,尤其适用于复 ...
- php配置mongodb扩展、安装mongodb服务教程
安装mongodb服务. 1.下载mongodb: mongodb 提供了可用于 32 位和 64 位系统的,你可以从mongodb官网下载安装. mongodb下载地址:https://www.mo ...
- MongoDB之conf配置文件详解
详细看一下mongodb配置文件. mongodb.conf # mongodb.conf# 数据库文件位置 dbpath=/var/lib/mongodb#日志文件的路径 logpath=/var/ ...
- CentOS7.4 安装mongodb
温馨提示:我的环境是腾讯云自带的CentOS7.4 x64 镜像,本地环境是win10 x64 专业版,ssh工具是用的win10 自带的cmd, 远程工具版本是Robo 3T 1.2.1 . 如果环 ...
- Centos7下安装MongoDB
简介 MongoDB 是一个基于分布式 文件存储的NoSQL数据库 由C++语言编写,运行稳定,性能高 旨在为 WEB 应用提供可扩展的高性能数据存储解决方案 查看官方网站 MongoDB特点 模式自 ...
- php mongodb execute,php简单操作mongodb
您现在的位置是:网站首页>>PHP>>php php简单操作mongodb 发布时间:2019-09-29 16:34:25作者:wangjian浏览量:525点赞量:0 一: ...
- 【MongoDB异常】Exception authenticating MongoCredential解决方法
我们通过ideal编辑器编辑 springboot时候,出现这个错误: com.mongodb.MongoSecurityException: Exception authenticating Mon ...
- mongodb插入数据获取本次插入的mongodb id
最近接了一个别人的项目做二次开发,使用php进行mongodb的数据操作时,需要插入数据后得到相应的mongodb 中的id,简单代码如下 $data = array('test' => 'aa ...
- mongodb之备份
前言 数据库的备份非常重要 备份方式 使用Mongodb自带的运维管理工具(Ops Manager) 需要单独部署,比较麻烦和复杂 通过文件系统快照 Linux需要LVM支持 需要开启journal日 ...
最新文章
- angular图片传到后台_告诉你,SpringBoot+Angular有多牛逼!
- log4j在eclipse上使用简介
- 管道、重定向、vim文本编辑器
- 7 个显著提升编码效率的IntelliJ IDEA必备插件
- SAP收购sysbase
- Java h264起始码_h.264 – 使用H264视频的起始码
- C++语言基础 —— STL —— 容器与迭代器 —— set 与 multiset
- 【语言处理与Python】1.3计算语言:简单的统计
- python关于csv的查询系统_使用Python对csv文件操作
- c语言彩票号码生成器
- 音视频 TS格式解析
- mdt 计算机名_配置 MDT 部署共享规则
- 2017java编程大赛,电子信息系第一届java编程大赛实施方案
- 手机图片怎么压缩,简单的压缩方法
- Python之OpenCV 007 《走近混沌》分形艺术Fractal之美
- UVALive 4490 Help Bubu
- 阿里云服务器一年多少钱?阿里云企业级云服务器报价表
- 如何编辑小红书种草文案?小红书怎么编写种草文案?
- 《生物化学与分子生物学》----蛋白质----听课笔记(六)
- 如何查看主机的网卡MAC地址及含义