MongoDB 之 手把手教你增删改查 MongoDB - 2

Posted itzhangxuhui

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MongoDB 之 手把手教你增删改查 MongoDB - 2相关的知识,希望对你有一定的参考价值。

 

我们在  MongoDB 之 你得知道MongoDB是个什么鬼 MongoDB - 1  中学习了如果安装部署一个 MongoDB

如果没看到我的金玉良言的话,就重新打开一次客户端和服务端吧

本章我们来学习一下关于 MongoDB的增删改查

一.MongoDB操作 之 原生ORM,根本不存在SQL语句

创建数据库:这里和一般的关系型数据库一样,都要先建立一个自己的数据库空间

技术图片

嗯嗯嗯嗯,我感受到了你内心的惊呼,瞅瞅你们这些没见过世面的样子

是的,MongoDB设计的比较随意,没有就认为你是在创建,use LuffyCity_Com是不存在的,所以MongoDB就认为你是要创建并使用

这个概念一定要记清楚哦,MongoDB中如果你使用了不存在的对象,那么就等于你在创建这个对象哦

使用了不存在的对象,就代表创建对象,我们使用这一谬论创建一张表(Collection)试试

技术图片

看来真的不是谬论,真的成功的创建了一个Oldboy的Collection

那么接下来就是在表(Collection)中添加一条数据了,怎么添加呢?

二.MongoDB 之 插入数据(insert     insertOne     insertMany) 之 Collection 点儿出一切操作 之 insert

insert:插入一条或者多条数据,需要带有允许插入多条的参数,这个方法目前官方已经不推荐喽

技术图片

db.Oldboy.insert("name":"DragonFire","age":20)

insertOne: 插入一条数据,官方推荐

技术图片

我们可以看出来两种方法的返回值截然不同对吧

insertMany:插入多条数据,无需参数控制,官方推荐

技术图片

 

这就是我们向LuffyCity_Com.Oldboy中插入了多条数据:

技术图片
[
  "name":"DragonFire",
  "age":20    
,

 "name":"WuSir",
 "age":19
]
技术图片

这里留下一个数据类型的悬念

插入完成就要查询

三.MongoDB  之  查询数据(find findOne) 之 这里没有findMany

这里不是select,如果你的第一反应是select 证明你关系型数据库没白学

find() 无条件查找:将该表(Collection)中所有的数据一次性返回

技术图片

db.Oldboy.find(name:"WuSir2b") 条件查找:name等于WuSir2b的数据,这里会返回多条结果

说到这里,有的同学不禁要问一下:"_id":ObjectId("乱七八糟一道对看着毫无关系的一对字符串") 是什么,我们插入的时候并没有一个字段(Field)并没有_id这个,

对了这就是MongoDB自动给我们添加到系统唯一标识"_id" 是一个ObjectId 类型,我们会在数据类型中第一个说到他(MongoDB 之 数据类型 最无聊! But 最有用! MongoDB - 3)

技术图片

findOne()无条件查找一条数据,默认当前Collection中的第一条数据

技术图片

findOne(age:19) : 条件查找一条age等于19的数据,如有多条数据则返回更靠前的数据

技术图片

查询数据的时候,发现了有些数据出现错误了,要修改怎么办呢?

 

四.MongoDB 之 修改数据(update updateOne updateMany) 之 跟insert一样,不推荐update的写法

update("name":"DragonFire",$set:"age":21):根据条件修改该条数据的内容

把name等于DragonFire中的age改为21,这里要注意的是("条件","关键字":"修改内容"),其中如果条件为空,那么将会修改Collection中所有的数据

关于$set关键字的解释就是,本节最后再说,留个悬念

技术图片

updateOne("age":19,$set:"name":"WSSB"):根据条件修改一条数据的内容,如出现多条,只修改最高前的数据

把age等于19的所有数据中第一条数据的name改为WSSB

技术图片

updateMany("age":19,$set:"name":"pig_qi"):根据条件修改所有数据的内容,多条修改

把age等于19的所有数据中的name改为WSSB

技术图片

上述中有一个$set的悬念,这个悬念呀,可能要留到再往后一些了

但是$set:"name":"WSSB"我还是要解释一下: $set 是update时的关键字,表示我要设置name属性的值为"WSSB"

那么我们之前说过MongoDB的灵活性,没有就代表我要创建,所以说如果该条Documents没有name属性,他就会自动创建一个name属性并且赋值为"WSSB"

更改了半天,我觉得,这些数据我都不想要了,该怎么办呢?

 

四.MongoDB  之  删除数据(remove) 之 如果你什么都不写,你讲失去全部的生命力

remove():无条件删除数据,这里要注意了,这是删除所有数据,清空Collection

当然了,我现在还不会操作,你看到的截图是我全部都写完之后的截图,如果跟着操作的话,那么你实在是太傻了,哈哈哈哈哈哈哈哈

 技术图片

如果你的数据全没了,那么请再练习一次insertMany(["name":"DragonFire"])吧,你多练习一次,总比马上忘记要强吧

remove("name":"DragonFire") : 条件删除name等于"DragonFire"的所有Document

技术图片

那么到这里呢,增删改查就已经完事儿了

之后我们来说一下MongoDB的数据类型,跟你们透漏一下,MongoDB的数据类型,老(te)有(bie)意(wu)思(liao)了

 

 
 

 

以上是关于MongoDB 之 手把手教你增删改查 MongoDB - 2的主要内容,如果未能解决你的问题,请参考以下文章

Go MongoDB官方数据库驱动之增删改查

PHP 操作 mongoDB 之添删改查

Golang操作MongoDB DAO - 增删改查

MongoDB使用mongodb driver api连接mongo并增删改查(mongodb module)

MongoDB使用mongodb driver api连接mongo并增删改查(mongodb module)

CDH5.15.1 hive 连接mongodb配置及增删改查