何为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的一些基本使用相关推荐

  1. windows安装MongoDB环境以及在pycharm中配置可视化插件

    安装MongoDB数据库 参考这里 安装PyMongo python3 -m pip3 install pymongo指定版本 python3 -m pip3 install pymongo==3.5 ...

  2. SQL与NoSQL的区别 以MySQL与MongoDB为例

    异同对比 1.语言和结构层面 SQL数据库,是基于表的,并且用结构化语言也就是SQL来定义和操纵数据.一方面,这是非常强大的:SQL是最通用和最广泛使用的选项之一,使其成为一个安全的选择,尤其适用于复 ...

  3. php配置mongodb扩展、安装mongodb服务教程

    安装mongodb服务. 1.下载mongodb: mongodb 提供了可用于 32 位和 64 位系统的,你可以从mongodb官网下载安装. mongodb下载地址:https://www.mo ...

  4. MongoDB之conf配置文件详解

    详细看一下mongodb配置文件. mongodb.conf # mongodb.conf# 数据库文件位置 dbpath=/var/lib/mongodb#日志文件的路径 logpath=/var/ ...

  5. CentOS7.4 安装mongodb

    温馨提示:我的环境是腾讯云自带的CentOS7.4 x64 镜像,本地环境是win10 x64 专业版,ssh工具是用的win10 自带的cmd, 远程工具版本是Robo 3T 1.2.1 . 如果环 ...

  6. Centos7下安装MongoDB

    简介 MongoDB 是一个基于分布式 文件存储的NoSQL数据库 由C++语言编写,运行稳定,性能高 旨在为 WEB 应用提供可扩展的高性能数据存储解决方案 查看官方网站 MongoDB特点 模式自 ...

  7. php mongodb execute,php简单操作mongodb

    您现在的位置是:网站首页>>PHP>>php php简单操作mongodb 发布时间:2019-09-29 16:34:25作者:wangjian浏览量:525点赞量:0 一: ...

  8. 【MongoDB异常】Exception authenticating MongoCredential解决方法

    我们通过ideal编辑器编辑 springboot时候,出现这个错误: com.mongodb.MongoSecurityException: Exception authenticating Mon ...

  9. mongodb插入数据获取本次插入的mongodb id

    最近接了一个别人的项目做二次开发,使用php进行mongodb的数据操作时,需要插入数据后得到相应的mongodb 中的id,简单代码如下 $data = array('test' => 'aa ...

  10. mongodb之备份

    前言 数据库的备份非常重要 备份方式 使用Mongodb自带的运维管理工具(Ops Manager) 需要单独部署,比较麻烦和复杂 通过文件系统快照 Linux需要LVM支持 需要开启journal日 ...

最新文章

  1. angular图片传到后台_告诉你,SpringBoot+Angular有多牛逼!
  2. log4j在eclipse上使用简介
  3. 管道、重定向、vim文本编辑器
  4. 7 个显著提升编码效率的IntelliJ IDEA必备插件
  5. SAP收购sysbase
  6. Java h264起始码_h.264 – 使用H264视频的起始码
  7. C++语言基础 —— STL —— 容器与迭代器 —— set 与 multiset
  8. 【语言处理与Python】1.3计算语言:简单的统计
  9. python关于csv的查询系统_使用Python对csv文件操作
  10. c语言彩票号码生成器
  11. 音视频 TS格式解析
  12. mdt 计算机名_配置 MDT 部署共享规则
  13. 2017java编程大赛,电子信息系第一届java编程大赛实施方案
  14. 手机图片怎么压缩,简单的压缩方法
  15. Python之OpenCV 007 《走近混沌》分形艺术Fractal之美
  16. UVALive 4490 Help Bubu
  17. 阿里云服务器一年多少钱?阿里云企业级云服务器报价表
  18. 如何编辑小红书种草文案?小红书怎么编写种草文案?
  19. 《生物化学与分子生物学》----蛋白质----听课笔记(六)
  20. 如何查看主机的网卡MAC地址及含义

热门文章

  1. 手机如何把PDF文件压缩的小一点?教你手机压缩文件方法
  2. uniapp简单的登录页面布局
  3. Python接口自动化测试
  4. word论文排版操作
  5. oracle系统常见错误(摘自文平书)
  6. 跨境电商亚马逊产品运营模式都有哪些
  7. 人类其实很脆弱,一个小小的条件变化,就能导致人没法享受元宇宙
  8. 运算放大器之开环增益
  9. logisim 快速加法器设计实验报告_八位加法器设计实验报告
  10. es 创建索引 指定id_简单操作elasticsearch(es版本7.6)