从MySQL快速过度到MongoDB

作者: 星辰大海的精灵 | 来源:发表于2024-04-28 11:03 被阅读0次

    如果你有mysql的基础,又想快速上手mongodb,那么不妨一起来试一试。

    说到mongodb 它有很多的有点,这里就先说一个就是它以文档方式存储,扩展灵活。举个例子就是当你设计了一张表后,老板突发奇想要给其中的一条记录增加一个新的属性(字段),那么对于mysql的表来说就比较麻烦了,需要修改表结构。而mongdb则不存在这种事情。

    mongodb 数据库创建

    mongodb中创建数据库比较简单,执行语句 use 数据库名; 即可,如果存在数据库则表示切换到该数据库,如果不存在则会创建该数据库。

    创建集合(可以理解为mysql表的概念)  

    执行 db.createCollection("集合名称");

    索引的创建

    db.集合名.createIndex({"字段名":排序方式})

    查看集合

    show tables; 或者 show collections;

    删除集合

    执行 db.集合名.drop();

    常用的语句

    为了能快速的上手,就不再啰嗦,这里将常用的一些方法进行举例。

    在进行数据写入时,如果已经存在该记录则忽略,在MySQL中我们通常使用 insert ignore into

    来实现,而在Mongodb中我们以插入两条记录为例,假设其中的一条已经存在数据库中

    假设库中存在 {"name":"张三","idcard":"000002"} 这条记录,此时我们又想批量插入新数据,但不确定新数据中是否存在库中已经存在的数据。可以使用如下方式

    db.test.isnertMany([{"name":"张三","idcard":"000002"},{"name":"李四","idcard":"000003"}],{"ordered":false})

    执行该语句时,只会将李四那条记录写入库中,已经存在的张三则不会重复写入

    还有一种情况比较常见,就是插入或更新,如果存在该记录则更新数据,不存在则插入。在mongodb中的方式如下:

    db.test.updateOne({"idcard":"000002"}, {'$set':{"name":"王五"}}, {"ordered":true})

    这里以updateOne为例,它有三个参数,第一个为条件,即为idcard为"000002"的记录进行更新或者写入,第二个参数则是以$set 为key的一个键值对,即更新内容,第三个参数是表示该操作是否进行插入动作,如果ordered设置为false 则表示若库中不存在该记录,无需将其插入库中。

    更新这里有些特别,比如updateOne 执行更新是即便你的库中存在多条数据满足条件,它也只更新其中的一条。

    _idname idcard

    65f28c05404d000008006b3a张三000001

    65f28e03404d000008006b58王五000002

    65f28e50404d000008006b5b李四000003

    65f3a9ef404d000008006b5e张三000004

    例如库中存在以上四条记录,而我们想更新所有name为张三的记录,给它们加入age=12

    如果执行 db.test.updateOne({"name":"张三"},{'$set':{"age":12}}) 这条语句

    执行结果会变成

    _idname idcard age

    65f28c05404d000008006b3a张三00000112

    65f28e03404d000008006b58王五000002

    65f28e50404d000008006b5b李四000003

    65f3a9ef404d000008006b5e张三000004

    很明显它是没有满足我们的需求的,若要达到效果需要使用updateMany

    查询语句

    常用的查询方式是db.集合名称.find

    例如查询所有

    db.test.find({})

    通过简单条件查询

    db.test.find({"name":"张三"}) 查询所有name为张三的记录

    LIKE模糊查询userName以字母A开头的数据(A%)

    在MySQL中会用以下方式

    SELECT * FROM test WHERE name LIKE "A%"

    而在MongoDB中写法则如下:

    db.test.find({name :/^A/})

    删除语句

    mongodb的删除语句和update 有些类似deleteOne 和 deleteMany,这里就不再啰嗦

    例子

    db.test.deleteOne({"name":"张三"})

    以上就是mongodb的一些简单用法,基本能满足一些基础的需要,如果要更多的了解,可以自行查阅,或者后面也考虑再总结一篇。

    相关文章

      网友评论

        本文标题:从MySQL快速过度到MongoDB

        本文链接:https://www.haomeiwen.com/subject/pduzxjtx.html