一.MongDB是什么呢,我该如何下手呢?

MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。

如果小伙伴你的机器上还没有安装MongoDb的话请快快去安装吧,下载地址:https://www.mongodb.com/download-center#community,如果下载慢的话,我也是没有办法了呢。

我使用的可视化界面是Robo,<>https://robomongo.org/download,这个下载还是比较快的,安装也是非常简单,直接next一路到底,最后设置一个连接配置。

如果你已经安装成功了,请快快和我学习MongDB的命令吧。

二.正文

大家不要认为MongoDb和平时的数据库不同,其关系如下表

SQL术语 MongoDB 解释
database database 数据库
table collection 数据库表/集合
row document 数据记录行/文档
column field 数据字段/域

对数据的操作如下

show collections #查看数据库中的表
show dbs #查看该服务器上所有的数据库
show users      #查询
se admin        #切换数据库
db.help();                 #显示数据库操作命令,里面有很多的命令
db.foo.help();  当前数据库的帮助
db.foo.find();  #not where
db.foo.find({a:1})  #条件是数据中有一个属性叫a,且a的值为1

实际上这个foo,代表你当前的数据库。

创建数据库操作如下

use demo; #创建数据库
db; #切换当前数据库
show dbs #检查数据库
db.test.insert({"_id":"520","name","xiaoming"}) #创建表+数据db.dropDatabase() #删除数据库

为什么你在这里可以不通过创建集合可以直接创建数据库呢,那是因为MongoDb的机制是,让你创建文档的时候,如果你没有集合,那就直接给你创建集合了。

创建集合操作如下

db.creatCollection("ccname") #ccname同dbname一样为自己剪的集合
db.creatCollection("ccname",{capped:true,autoIndexID:true,size:10000,max:10000})

其参数表如下:

字段 类型 描述
capped 布尔 固定集合的大小,如果值为true时必须也指定size
autoindexid 布尔 如果为true,自动创建_id字段索引
size 数值 设置集合的大小
max 数值 指定固定集合中包含文档的最大数量

删除集合:

db.ccname.drop()

其中通过createCollection创建表返回{"ok":1.0}表示成功,删除为true则成功;

文档的ADD:

db.zaraList.insert({'name':'zara','age':18})
db.zaraList.find()或者你可以定义一个变量abc = ({'name':'zara','age':18}) db.zaraList.insert(abc)

 结果:

/* 1 */
{
"_id" : ObjectId("5bf8b297ac045dc7d0a20b2c"),
"name" : "zara",
"age" : 18.0
}

id自动给我们加密了,是不是非常的炫酷。

文档的Delete:

db.zaraList.remove({'name':'zara'})#删除所有name=李华的文档
db.zaraList.remove({'name':'zara'},{justOne:1})#删除一条name=李华的文档

聪明的小伙伴,现在绝对想到了,刚才我们插入的id是个加密的了,那我们怎么删除它呢?

 db.zaraList.remove({"_id":ObjectId("5bf8b297ac045dc7d0a20b2c")})

一些方法:

db.collection.remove() 删除单个文档或与指定过滤器匹配的所有文档。
db.collection.deleteOne()

即使多个文档可能与指定的过滤器匹配,也最多删除与指定过滤器匹配的单个文档。3.2新版功能。

db.collection.deleteMany()

删除所有匹配指定过滤条件的文档。3.2新版功能。

需要注意的是remove() 方法已经过时了,现在官方推荐使用 deleteOne() 和 deleteMany() 方法。

如删除集合下全部文档:

db.inventory.deleteMany({})

删除 status 等于 A 的全部文档:

db.inventory.deleteMany({ status : "A" })

删除 status 等于 D 的一个文档:

db.inventory.deleteOne( { status: "D" } )

为什么不推荐呢,好像是因为一个释放的东西,每次remove的时候都需要 db.repairDatabase() 来回收磁盘空间。

>db.repairDatabase()
或者
> db.runCommand({ repairDatabase: 1 })

文档的Update:

db.collection.update(<query>,<update>,{upsert: <boolean>,multi: <boolean>,writeConcern: <document>}
)

 参数说明:

  • query : update的查询条件,类似sql update查询内where后面的。
  • update : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的
  • upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
  • multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
  • writeConcern :可选,抛出异常的级别。

我们在ZaraList中先多插个数据(实际上偷偷的插了几条):

接着我们通过update去更新下这个title吧。

db.zara.update({'title':'zara说MongoDb'},{$set:{'title':'该吃了呢'}})

  

为什么只更新第一个符合的呢,这个时候multi 就派上用场了;则需要设置 multi 参数为 true。

>db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}},{multi:true})

如果你没用可视化窗口,那可能查出来的数据是一行一行的,你可以通过格式化进行整合美观点。

db.zara.find().pretty()

文档的Select

语法:db.collection.find(query, projection)

参数解析:

  • query :可选,使用查询操作符指定查询条件
  • projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。

and写法:

db.col.find({key1:value1, key2:value2}).pretty()

Or写法:

db.col.find({$or: [{key1: value1}, {key2:value2}]}
).pretty()

and 和 or 联合使用

db.col.find({"likes": {$gt:50}, $or: [{"by": "zara"},{"title": "MongoDB"}]}).pretty()

三.写到最后(不是大牛就不可以写博客了吗?)

你不是大牛就更应该写博客,无论你是开发还是运维测试,都是搞技术的,技术发展的很快,难道学完就丢了,过明天在拾起来?你不像那些大牛看看官方文档在自己动动手就可以懂原理的人,你就更没有理由不写博客了。

转载于:https://www.cnblogs.com/ZaraNet/p/10011570.html

【MongoDb入门】15分钟让你敢说自己会用MongoDB了相关推荐

  1. mongoDB 入门指南、示例

    http://www.cnblogs.com/hoojo/archive/2011/06/01/2066426.html mongoDB 入门指南.示例 上一篇:简单介绍mongoDB 一.准备工作 ...

  2. 在15分钟内使用Spring Boot和Spring Security构建一个Web应用程序

    "我喜欢编写身份验证和授权代码." 〜从来没有Java开发人员. 厌倦了一次又一次地建立相同的登录屏幕? 尝试使用Okta API进行托管身份验证,授权和多因素身份验证. 开发人员 ...

  3. mongodb入门的几篇文章

    2019独角兽企业重金招聘Python工程师标准>>> mongoDB 入门指南.示例 比较简洁概要的描述了mongodb中常用的操作. 8天学通MongoDB 从安装,简单的增删改 ...

  4. python 神经网络工具_神经网络15分钟入门!使用python从零开始写一个两层神经网络...

    本篇是该系列的第三篇,建议在阅读本篇文章之前先看前两篇文章. 在本文中将使用python实现之前描述的两层神经网络,并完成所提出的"象限分类"的问题. 需要注意的是,虽然标题叫做神 ...

  5. jq 正则判断邮箱_Python正则15分钟入门

    lypython群里有同学问我,如何从大量格式不确定的word文档抽取姓名.电话号码.邮箱等信息存入excel表格.通过之前我们的文章,他已经学会读取和写入文档和表格,但就是无法处理格式不确定的文档. ...

  6. 如何15分钟快速入门LaTeX公式?

    LaTeX 是一种基于 ΤΕΧ 的排版系统,其中非常突出的是方便而强大的数学公式排版能力.日常大家在整理诸如数学.化学等学科的思维导图时,经常会有输入公式的需求. 所以,ProcessOn产研团队快马 ...

  7. 每天15分钟JMeter入门篇(二):使用JMeter实现并发测试

    每天15分钟JMeter入门篇(一):Hello JMeter 每天15分钟JMeter入门篇(二):使用JMeter实现并发测试 每天15分钟JMeter入门篇(三):认识JMeter的逻辑控制器 ...

  8. Geode 15分钟入门指南

    Apache Geode文档 本文档介绍了产品概念,并提供了Apache Geode 1.7的完整设置说明. 源文件可从[Apache Geode Github存储库](../../../../ gi ...

  9. 探花交友_第2章-完善个人信息与MongoDB入门

    探花交友_第2章-完善个人信息与MongoDB入门 文章目录 探花交友_第2章-完善个人信息与MongoDB入门 1.完善个人信息 1.1.图片上传 1.1.1.图片存储解决方案 1.1.2.阿里云O ...

  10. 开放下载!《15分钟打造你自己的小程序》(内附详细代码)

    简介: 零基础开发你自己的支付宝小程序,教程在手不迷路,从入门到精通,还有详细代码在里面哦~ <15分钟打造你自己的小程序>独家电子书上线啦!零基础开发你自己的支付宝小程序,手把手教你从入 ...

最新文章

  1. AWS — Nitro System
  2. Matlab读和写图像需要注意的问题
  3. windos 为什么会突然服务停止了_Windows服务异常自动关闭
  4. 【Python】20个小技巧,让数据可视化图表更专业!
  5. bootcmd和bootargs
  6. MVC是架构模式,而不是设计模式
  7. python 开发板 播放音乐_MicroPython开发板:TPYBoard v102 播放音乐实例
  8. 8月20日全球六大国际域名解析量变化情况统计报告
  9. 3198元起!vivo X27/X27 Pro发布 升降摄像头+4800万三摄
  10. java h5 交互 传数组, JS数组/对象的值为什么变了?你需要深入理解对象的值传递...
  11. leancloud上传图片js_leanCloud上传多个图片保存到一个数组中的疑惑
  12. Macbook实用技巧——小白入门必须会的
  13. 什么是技术债,为什么要还技术债?
  14. FAST-LIO论文阅读
  15. 一张色环图教你搞定配色!
  16. 剑指offer(1)(讲解极其详细版)
  17. 最新最全的手机号验证正则表达式
  18. win7打开计算机一片空白,win7系统打开本地连接属性一片空白的解决方法
  19. requests+re模块爬取豆瓣排行版电影和图片保存至本地
  20. 福布斯富豪榜结果出炉,王健林财富缩水682.4亿元

热门文章

  1. visual studio2013 php
  2. 计算分词的Tf-idf值
  3. 基于http live streaming, 使用vlc + mediastreamsegmenter + apache 实现iOS视频直播
  4. Eclipse.org上Git已经超越了CVS与SVN
  5. File Manager所支持的文件
  6. Charles的安装及设置
  7. MySQL Binlog--事务日志和BINLOG落盘参数对磁盘IO的影响
  8. 背景图片自适应大小(css3)
  9. Python数据结构之字节,字节数组
  10. node设置跨域白名单