如果你有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的一些简单用法,基本能满足一些基础的需要,如果要更多的了解,可以自行查阅,或者后面也考虑再总结一篇。
网友评论