• MongoDB简介,安装,增删改查


    那么好,所谓千呼万唤始出来,现在我就拉给你们看:

    一.初识MongoDB 之 什么东西都得先从理论入手,你说是不是啊?

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

    MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。

    官方给出了以上的解释,那么综上所述,马德 F U C K ! 有效信息太少了(完全没用)

    那么让我来用人类的语言讲述一下MongoDB吧

    它和我们使用的关系型数据库最大的区别就是约束性,可以说文件型数据库几乎不存在约束性,理论上没有主外键约束,没有存储的数据类型约束等等

    关系型数据库中有一个 "表" 的概念,有 "字段" 的概念,有 "数据条目" 的概念

    MongoDB中也同样有以上的概念,但是名称发生了一些变化,严格意义上来说,两者的概念即为相似,但又有些出入,不过无所谓,我们就当是以上概念就好啦

    光说的话,还是有点儿模糊,就让我们来做一个小例子,进行一个对比吧

    接下来我们先看一下MongoDB的数据结构:

    {
        "_id" : ObjectId("5bfcf269b990651011d59d00"),
        "name" : "chaoge",
        "test_list" : [
            102,
            108,
            4,
            5
        ],
        "info" : {
            "性别" : "",
            "height" : 172,
            "weight" : 128
        }
    },
    
    {
        "_id" : ObjectId("5bfcf2f4b990651011d59d01"),
        "name" : "chaoge_sb",
        "age" : 30
    },
    {
        "_id" : ObjectId("5bfe61c5004e553ad8af92c9"),
        "name" : "强哥"
    }

    上面的格式还可以转化成下面这种样子:

    这......这特么不就是字典吗?你说的对,如果你理解成了字典,那么证明了你只会Python,在其他语言中它又是别的类型了,我们把这种类型的玩意儿,叫做:Json

    那么你就该恍然大悟了吧,MongoDB的每个表(Collection)中存储的每条数据(Documents)都是一个一个的Json,Json中的每一个字段(Key)我们称之为:Field

    就此我们引出了三个关键字,Collection也就是关系型数据库中"表"的概念,Documents就是"数据条目",Field就是"字段"

    二.MongoDB安装部署 之 你必须得先安装上数据库才能继续装X

    关于MongoDB的安装,真的没有难度,真的真的没有难度,来跟着DragonFire一步一步操作,带你Legendary

    首先分享给你一个MongoDB 3.4的msi安装包 点击这里可以下载哦(如果不能下载证明我还没搞定分享msi,自己下载一个吧)

     

    安装完成之后,开始进入配置环节,首先我们要进入目录:

    "C:Program FilesMongoDBServer3.4in"

    带着你配置环境变量,让X装的更加自然更加美:

    之后的操作,windows 7 与 windows 10 不太一样,大同小异啦

    windows 10 一路到底的"确定"

    windows 7 在这里需要注意的是,Path路径移动到最后,输入:"  ;C:Program FilesMongoDBServer3.4in  " 一定要带上 "  ;  " 哦

    因为没有找到windows 7 操作系统的计算机,所以这里只能给windows 7 的同学说声抱歉了

    OK!到了这里我们基本已经完成了部分操作了

    我们来试一下成果吧

    打开cmd窗口进行一次ZB的操作吧

    mongo # 打开服务端
    mongod # 打开客户端
    MongoDB的默认端口是:27017

    那我们来创建一个" C:datadb "的目录吧

    mkdir c:datadb

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

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

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

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

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

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

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

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

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

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

    db.table.insert({"name":"xiaoqiang","age":20})

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

    db.table.insertOne({"name":"超哥","age":20})

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

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

    db.table.insertMany({"name":"超哥1","age":20},{"name":"超哥2","age":19})

    这就是我们向table中插入了多条数据:

    [{
      "name":"超哥1",
      "age":20    
    },
    {
     "name":"超哥2",
     "age":19
    ...
    }]

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

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

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

    db.table.find()

    db.table.find({name:"超哥1"}) 条件查找:name等于超哥1的数据,这里会返回多条结果

    db.table.find({name:"超哥1"}})

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

    db.table.findOne()

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

    db.table.findOne({"age":20})

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

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

    update({"name":超哥"},{$set:{"age":20}}):根据条件修改该条数据的内容

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

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

    db.table.update({}"name":"超哥"},{$set:{"age":21}})

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

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

    db.table.updateOne({"age":19},{$set:{"name":超哥1}})

    根据条件修改所有数据的内容,多条修改,把age等于19的所有数据中的name改为超哥3

    db.updateMany({"age":19},{$set:{"name":"超哥3"}})

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

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

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

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

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

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

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

    db.table.remove({})

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

    remove({"name":"超哥"}) : 条件删除name等于"超哥"的所有Document

    db.table.remove({"name":"超哥"})

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

  • 相关阅读:
    sqlite3 增删改查
    Charles 修改接口返回值
    矫正Django 时间不正确
    unittest 使用 HTMLTestRunner 生成测试报告
    unittest 使用例子
    pyppeteer
    linux源码编译-安装timescaledb数据库(中标麒麟+龙芯CPU) (转载)
    不会用java api对kafka topic进行创建、查询和删除,你也太out了(建议收藏)(转载)
    django 学习(转载)
    Docker 启动镜像(转载)
  • 原文地址:https://www.cnblogs.com/daofaziran/p/10026566.html
Copyright © 2020-2023  润新知