MongoDB的简单介绍:

1:MongoDB是什么?

  • mongodb是非关系数据库 但是是非关系数据库当中功能最丰富,最像关系数据库的
  • MongoDB是一个基于分布式文件存储的数据库。
  • C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。

2:MongoDB的三大特点:

  • 高性能
  • 易部署
  • 易使用
  • 存储数据非常方便
  • 支持 GolangRUBYPYTHONJAVAC++PHPC#等多种语言
  • 文件存储格式为BSON(一种JSON的扩展)。

3:先来介绍我们的插入语句吧

1:插入语句:

插入一条数据:

> db.jie.insert({name:"jie",age:18})
WriteResult({ "nInserted" : 1 })

可以使用:db.集合名.find()查看 

> db.jie.find()
{ "_id" : ObjectId("6069ac8300fc7b062bb3ed94"), "name" : "jie", "age" : 18 }
这里id可以自己设置
可以指定id 不过最好不要指定

插入多条:

> db.jie.insert([{name:"luyunjie",age:18},{name:"jiebao",age:19}])
BulkWriteResult({
"writeErrors" : [ ],
"writeConcernErrors" : [ ],
"nInserted" : 2,
"nUpserted" : 0,
"nMatched" : 0,
"nModified" : 0,
"nRemoved" : 0,
"upserted" : [ ]
})

mongodb也可以使用js语法 用for循环插入多条数据:

> for (var i=1;i<=10;i++){
db.jie1.insert({name: "jie"+i,age: i})
}
WriteResult({ "nInserted" : 1 })
这里不为10是因为for循环是一条一条插入
然后只显示最后一条插入的数量 单用find()查看还是可以查看10条数据

> db.jie1.find()
{ "_id" : ObjectId("6069b34700fc7b062bb3ed97"), "name" : "jie1", "age" : 1 }
{ "_id" : ObjectId("6069b34700fc7b062bb3ed98"), "name" : "jie2", "age" : 2 }
{ "_id" : ObjectId("6069b34700fc7b062bb3ed99"), "name" : "jie3", "age" : 3 }
{ "_id" : ObjectId("6069b34700fc7b062bb3ed9a"), "name" : "jie4", "age" : 4 }
{ "_id" : ObjectId("6069b34700fc7b062bb3ed9b"), "name" : "jie5", "age" : 5 }
{ "_id" : ObjectId("6069b34700fc7b062bb3ed9c"), "name" : "jie6", "age" : 6 }
{ "_id" : ObjectId("6069b34700fc7b062bb3ed9d"), "name" : "jie7", "age" : 7 }
{ "_id" : ObjectId("6069b34700fc7b062bb3ed9e"), "name" : "jie8", "age" : 8 }
{ "_id" : ObjectId("6069b34700fc7b062bb3ed9f"), "name" : "jie9", "age" : 9 }
{ "_id" : ObjectId("6069b34700fc7b062bb3eda0"), "name" : "jie10", "age" : 10 }

2:查询语句

基本的运算符介绍:

出几个题目 配合查询语句来一一实现:

1:只查询字段name的值:

> db.jie1.find({},{name:1})
{ "_id" : ObjectId("6069b34700fc7b062bb3ed97"), "name" : "jie1" }
{ "_id" : ObjectId("6069b34700fc7b062bb3ed98"), "name" : "jie2" }
{ "_id" : ObjectId("6069b34700fc7b062bb3ed99"), "name" : "jie3" }
{ "_id" : ObjectId("6069b34700fc7b062bb3ed9a"), "name" : "jie4" }
{ "_id" : ObjectId("6069b34700fc7b062bb3ed9b"), "name" : "jie5" }
{ "_id" : ObjectId("6069b34700fc7b062bb3ed9c"), "name" : "jie6" }
{ "_id" : ObjectId("6069b34700fc7b062bb3ed9d"), "name" : "jie7" }
{ "_id" : ObjectId("6069b34700fc7b062bb3ed9e"), "name" : "jie8" }
{ "_id" : ObjectId("6069b34700fc7b062bb3ed9f"), "name" : "jie9" }
{ "_id" : ObjectId("6069b34700fc7b062bb3eda0"), "name" : "jie10" }
无论查询什么 id都会一直在的

2:查询age大于5 小于8的所有数据:

> db.jie1.find({age:{$gte:5,$lte:8}})
{ "_id" : ObjectId("6069b34700fc7b062bb3ed9b"), "name" : "jie5", "age" : 5 }
{ "_id" : ObjectId("6069b34700fc7b062bb3ed9c"), "name" : "jie6", "age" : 6 }
{ "_id" : ObjectId("6069b34700fc7b062bb3ed9d"), "name" : "jie7", "age" : 7 }
{ "_id" : ObjectId("6069b34700fc7b062bb3ed9e"), "name" : "jie8", "age" : 8 }
运用我们的运算符来达到效果 运算符的语法是
  db.集合名.find(

    键:{运算符:值}
)

3:查询age为1,4, 5, 9 的所有数据:

> db.jie1.find({age:{$in:[1,4,5,9]}})
{ "_id" : ObjectId("6069b34700fc7b062bb3ed97"), "name" : "jie1", "age" : 1 }
{ "_id" : ObjectId("6069b34700fc7b062bb3ed9a"), "name" : "jie4", "age" : 4 }
{ "_id" : ObjectId("6069b34700fc7b062bb3ed9b"), "name" : "jie5", "age" : 5 }
{ "_id" : ObjectId("6069b34700fc7b062bb3ed9f"), "name" : "jie9", "age" : 9 }
运用运算符达到效果

4:把age倒序排列(运用sort()来排序):

> db.jie1.find().sort({age:-1})
{ "_id" : ObjectId("606a79d6945dd5f6933d5845"), "name" : "jie10", "age" : 10 }
{ "_id" : ObjectId("606a79d6945dd5f6933d5844"), "name" : "jie9", "age" : 9 }
{ "_id" : ObjectId("606a79d6945dd5f6933d5843"), "name" : "jie8", "age" : 8 }
{ "_id" : ObjectId("606a79d6945dd5f6933d5842"), "name" : "jie7", "age" : 7 }
{ "_id" : ObjectId("606a79d6945dd5f6933d5841"), "name" : "jie6", "age" : 6 }
{ "_id" : ObjectId("606a79d6945dd5f6933d5840"), "name" : "jie5", "age" : 5 }
{ "_id" : ObjectId("606a79d6945dd5f6933d583f"), "name" : "jie4", "age" : 4 }
{ "_id" : ObjectId("606a79d6945dd5f6933d583e"), "name" : "jie3", "age" : 3 }
{ "_id" : ObjectId("606a79d6945dd5f6933d583d"), "name" : "jie2", "age" : 2 }
{ "_id" : ObjectId("606a79d6945dd5f6933d583c"), "name" : "jie1", "age" : 1 }
运用sort()来进行倒序
语法:db.集合名.find().sort({查询的字段:
-1 })
-1为倒序 1为正序

聚合函数:

简单介绍一下聚合函数的管道:

                                

表达式 描述 实例
$sum 计算总和。 db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : "$likes"}}}])
$avg 计算平均值 db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$avg : "$likes"}}}])
$min 获取集合中所有文档对应值得最小值。 db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$min : "$likes"}}}])
$max 获取集合中所有文档对应值得最大值。 db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$max : "$likes"}}}])
$push 在结果文档中插入值到一个数组中。 db.mycol.aggregate([{$group : {_id : "$by_user", url : {$push: "$url"}}}])
$addToSet 在结果文档中插入值到一个数组中,但不创建副本。 db.mycol.aggregate([{$group : {_id : "$by_user", url : {$addToSet : "$url"}}}])
$first 根据资源文档的排序获取第一个文档数据。 db.mycol.aggregate([{$group : {_id : "$by_user", first_url : {$first : "$url"}}}])
$last 根据资源文档的排序获取最后一个文档数据 db.mycol.aggregate([{$group : {_id : "$by_user", last_url : {$last : "$url"}}}])

 聚合函数语法:

db.集合名.aggregate([
{管道:{ 表达式}
....
]})

题目自测:

1:统计男生,女生的总年龄:

准备数据:
db.xiaojie3.insert([
{name:"小杰",sex:1,age:18},
{name:"杰宝",sex:1,age:19},
{name:"小红",sex:2,age:20},
{name:"小青",sex:2,age:16}
])
代码:
db.xiaojie3.aggregate([
{$group:{
_id:"$sex",
num:{$sum:"$age"}
}
}])

分页查询(skip和limit):

语法:

db.集合名.find().skip(跳过多少条的数字).limit(查询多少条的数字)
skip是可选值 可不添加

练习题目

1:只查询age为10和9的数据:

> db.jie1.find().sort({age:-1}).limit(2)
{ "_id" : ObjectId("606a79d6945dd5f6933d5845"), "name" : "jie10", "age" : 10 }
{ "_id" : ObjectId("606a79d6945dd5f6933d5844"), "name" : "jie9", "age" : 9 }

 2:降序跳过4条数据 查4条:

> db.jie1.find().sort({age:-1}).skip(4).limit(4)
{ "_id" : ObjectId("606a79d6945dd5f6933d5841"), "name" : "jie6", "age" : 6 }
{ "_id" : ObjectId("606a79d6945dd5f6933d5840"), "name" : "jie5", "age" : 5 }
{ "_id" : ObjectId("606a79d6945dd5f6933d583f"), "name" : "jie4", "age" : 4 }
{ "_id" : ObjectId("606a79d6945dd5f6933d583e"), "name" : "jie3", "age" : 3

3:修改(更新)语句:

修改器的基本介绍:

如果不用修改器来修改数据 则是替换

列子:

> db.jie.update({name:"jie"},{name:"xiaojie"})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.jie.find()
{ "_id" : ObjectId("6069ac8300fc7b062bb3ed94"), "name" : "xiaojie" }
{ "_id" : ObjectId("6069ad8700fc7b062bb3ed95"), "name" : "luyunjie", "age" : 18 }
{ "_id" : ObjectId("6069ad8700fc7b062bb3ed96"), "name" : "jiebao", "age" : 19 }
>
到达的是替换的效果

我们继续举列子来讲解:

1:修改name为luyunjie的字段 把luyunjie改为xiaojiejie其他不变:

> db.jie.update({name:"luyunjie"},{$set:{name:"xiaojiejie"}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.jie.find()
{ "_id" : ObjectId("6069ac8300fc7b062bb3ed94"), "name" : "xiaojie" }
{ "_id" : ObjectId("6069ad8700fc7b062bb3ed95"), "name" : "xiaojiejie", "age" : 18 }
{ "_id" : ObjectId("6069ad8700fc7b062bb3ed96"), "name" : "jiebao", "age" : 19 }
修改成功 运用修改器
修改器语法:
db.集合名.updata(
{修改的值},
{修改器:{修改的值}
})

2:给age为20的数据递加或递减5:

递增:

> db.jie.update({age:20},{$inc:{age:5}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.jie.find()
{ "_id" : ObjectId("6069ac8300fc7b062bb3ed94"), "name" : "xiaojie" }
{ "_id" : ObjectId("6069ad8700fc7b062bb3ed95"), "name" : "xiaojiejie", "age" : 25 }
{ "_id" : ObjectId("6069ad8700fc7b062bb3ed96"), "name" : "jiebao", "age" : 19 }

递减:

> db.jie.update({age:18},{$inc:{age:-5}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.jie.find()
{ "_id" : ObjectId("6069ac8300fc7b062bb3ed94"), "name" : "xiaojie" }
{ "_id" : ObjectId("6069ad8700fc7b062bb3ed95"), "name" : "xiaojiejie", "age" : 20 }
{ "_id" : ObjectId("6069ad8700fc7b062bb3ed96"), "name" : "jiebao", "age" : 19 }
>

3:练习为修改器为修改多个值

题目:把name里面的数据改为小杰,age数据递增20,sex字段删除,dta字段改为bianhao;

准备数据:

> db.xiaojie.insert({name:"jie",age:20,sex:"boy",dta:"123"})
WriteResult({ "nInserted" : 1 })
> db.xiaojie.find()
{ "_id" : ObjectId("6069c59800fc7b062bb3eda1"), "name" : "jie", "age" : 20, "sex" : "boy", "dta" : "123" }

题目答案:

> db.xiaojie.update({name:"jie"},{$set:{name:"小杰"},$inc:{age:20},$rename:{dta:"bianhao"},$unset:{sex:true}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.xiaojie.find()
{ "_id" : ObjectId("6069c59800fc7b062bb3eda1"), "name" : "小杰", "age" : 40, "bianhao" : "123" }
这里有几个点 多条语句的写法如上 db.集合名.update
({修改字段:字段值}, {
修改器:{},
修改器:{},
修改器:{},
修改器:{}
})

4:删除语句:

删除语法是:

db.集合名.remove({条件},是否删除一条)

1:删除一条数据:

> db.jie1.remove({},true)
WriteResult({ "nRemoved" : 1 })
> db.jie1.find()
{ "_id" : ObjectId("6069b34700fc7b062bb3ed98"), "name" : "jie2", "age" : 2 }
{ "_id" : ObjectId("6069b34700fc7b062bb3ed99"), "name" : "jie3", "age" : 3 }
{ "_id" : ObjectId("6069b34700fc7b062bb3ed9a"), "name" : "jie4", "age" : 4 }
{ "_id" : ObjectId("6069b34700fc7b062bb3ed9b"), "name" : "jie5", "age" : 5 }
{ "_id" : ObjectId("6069b34700fc7b062bb3ed9c"), "name" : "jie6", "age" : 6 }
{ "_id" : ObjectId("6069b34700fc7b062bb3ed9d"), "name" : "jie7", "age" : 7 }
{ "_id" : ObjectId("6069b34700fc7b062bb3ed9e"), "name" : "jie8", "age" : 8 }
{ "_id" : ObjectId("6069b34700fc7b062bb3ed9f"), "name" : "jie9", "age" : 9 }
{ "_id" : ObjectId("6069b34700fc7b062bb3eda0"), "name" : "jie10", "age" : 10 }

2:删除全部数据:

> db.jie1.remove({})
WriteResult({ "nRemoved" : 9 })

简单介绍了一下MongoDB的CRUD操作 这篇博客会慢慢完善成MongoDB笔记 加油一起努力!

MongoDB的CRUD操作(入门)的更多相关文章

  1. MongoDB的CRUD操作

    1. 前言 在上一篇文章中,我们介绍了MongoDB.现在,我们来看下如何在MongoDB中进行常规的CRUD操作.毕竟,作为一个存储系统,它的基本功能就是对数据进行增删改查操作. MongoDB中的 ...

  2. 【翻译】MongoDB指南/CRUD操作(四)

    [原文地址]https://docs.mongodb.com/manual/ CRUD操作(四) 1 查询方案(Query Plans) MongoDB 查询优化程序处理查询并且针对给定可利用的索引选 ...

  3. 【翻译】MongoDB指南/CRUD操作(三)

    [原文地址]https://docs.mongodb.com/manual/ CRUD操作(三) 主要内容: 原子性和事务(Atomicity and Transactions),读隔离.一致性和新近 ...

  4. 【翻译】MongoDB指南/CRUD操作(二)

    [原文地址]https://docs.mongodb.com/manual/ MongoDB CRUD操作(二) 主要内容: 更新文档,删除文档,批量写操作,SQL与MongoDB映射图,读隔离(读关 ...

  5. 【翻译】MongoDB指南/CRUD操作(一)

    [原文地址]https://docs.mongodb.com/manual/ MongoDB CRUD操作(一) 主要内容:CRUD操作简介,插入文档,查询文档. CRUD操作包括创建.读取.更新和删 ...

  6. Mongodb系列- CRUD操作介绍

    ---恢复内容开始--- 一 Create 操作 在MongoDB中,插入操作的目标是一个集合. MongoDB中的所有写入操作在单个文档的层次上都是原子的. For examples, see In ...

  7. MongoDB的CRUD操作(java Util )

    1.保存插入操作: public static synchronized String insert(DBObject record) { DBCollection col = MongoDB.get ...

  8. 实例讲解Springboot整合MongoDB进行CRUD操作的两种方式

    1 简介 Springboot是最简单的使用Spring的方式,而MongoDB是最流行的NoSQL数据库.两者在分布式.微服务架构中使用率极高,本文将用实例介绍如何在Springboot中整合Mon ...

  9. Spring Data MongoDB 一:入门篇(环境搭建、简单的CRUD操作)

    一.简介 Spring Data  MongoDB 项目提供与MongoDB文档数据库的集成.Spring Data MongoDB POJO的关键功能区域为中心的模型与MongoDB的DBColle ...

  10. MyBatis入门学习教程-使用MyBatis对表执行CRUD操作

    上一篇MyBatis学习总结(一)--MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据,算是对MyBatis有一个初步的入门了,今天讲解一下如何使用MyBatis对use ...

随机推荐

  1. Destoon模板存放及调用规则

    一.模板存放及调用规则 模板存放于系统 template 目录,template 目录下的一个目录例如 template/default/ 即为一套模板模板文件以 .htm 为扩展名,可直接存放于模板 ...

  2. Flask框架——模板、数据库ORM

    文章目录 1 模板 1 重定向 1.1 什么是重定向? 1.2 为什么要有重定向? 1.3 如何使用重定向? 1.3.1 暂时性重定向(代码实例): 1.3.2 永久性重定向(代码实例) 2 jinj ...

  3. Django框架项目之项目基础——项目介绍、需求分析、pip安装源、环境搭建、前台、后台、跨域请求

    文章目录 1 路飞学城 1.1 企业的web项目类型 1.2 企业项目开发流程 1.3 立项申请阶段 2. 需求分析 2.1 首页 2.2 登录注册 2.3 课程列表 2.4 课程详情 2.5 购物车 ...

  4. 高效数据管理:Java助力实现Excel数据验证

    摘要:本文由葡萄城技术团队原创并首发.转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 前言 在Java中,开发者可以使用一些开源的库(如Apache POI ...

  5. Composite 组合模式简介与 C# 示例【结构型3】【设计模式来了_8】

    〇.简介 1.什么是组合设计模式? 一句话解释:   针对树形结构的任意节点,都实现了同一接口,他们具有相同的操作,可以通过某一操作来遍历全部节点. 组合模式通过使用树形结构来组合对象,用来表示部分以 ...

  6. 02-oracle11g rac RMAN备份恢复至单机(未验证)

    在一节点上进行全备确定备份路径,并赋予属组mkdir /rmanbackupchown oracle:oinsatll /rmanbackup进入rman进行全备rman target /run{al ...

  7. Visible Lattice Points 题解

    Visible Lattice Points 题目大意 给定一个 \(N×N×N\) 的由若干点组成的立方体,点的坐标从 \((0,0,0)\) 到 \((N,N,N)\),求从点 \((0,0,0) ...

  8. mysql出现10061错误解决方法

    首先要关闭MYSQL服务 关闭你现在正在运行的mysql数据库,用结束mysql进程或者直接关闭mysql服务器都可以 1.开始菜单->运行(cmd)->寻径到MySQL文件中的bin目录 ...

  9. unity UGUI 正交相机实现图片的透视旋转效果

    UI透视效果常见的就是绕x轴或y轴旋转,来达到近大远小的效果.正经要做透视UI的话肯定直接用透视相机,如果透视效果用的极少(就一张图)不改动相机类型才按这种思路进行. 最简单直接的想法就是把矩形的图片 ...

  10. RSA总结 From La神

    常用工具 分解大素数 factordb (http://www.factordb.com / API: http://factordb.com/api?query=) yafu (p q 相差过大或过 ...