zoukankan      html  css  js  c++  java
  • MongoDB

    我们在  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)了

  • 相关阅读:
    LeetCode 977 有序数组的平方
    LeetCode 24 两两交换链表中的节点
    LeetCode 416 分割等和子集
    LeetCode 142 环形链表II
    LeetCode 106 从中序与后序遍历序列构造二叉树
    LeetCode 637 二叉树的层平均值
    LeetCode 117 填充每个节点的下一个右侧节点
    LeetCode 75 颜色分类
    redhat 7.4 挂载ntfs格式的u盘并且使用
    redhat 查看CPU frequency scaling(CPU频率缩放)
  • 原文地址:https://www.cnblogs.com/songhuasheng/p/10279179.html
Copyright © 2011-2022 走看看