四十九、MongoDB数据库1:MongoDB的增、删、改、查

版权声明:本文为博主原创文章,未经博主允许不得转载。博客地址:https://blog.csdn.net/xk1761299425 https://blog.csdn.net/xk1761299425/article/details/82054383

一、连接数据库

如果只在windows下使用:进入数据库命令:mongo

如果windows要连接虚拟机(服务器),命令:mongo  服务器IP地址:27017

Mongodb ‘无状态模式’,不用去设计,直接用,存什么东西,取决于前边传什么,后边就存什么。

中文文档:http://docs.mongoing.com/

英文文档:https://docs.mongodb.com/manual/

二、数据库相关操作

1、获取当前你正在使用的数据库:db.getName() 或是db

2、查看已有的数据库(显示所有的数据库):show dbs  或 show databases

3、选择数据库:use 库名

注意:use了一个不存在的数据库,会自动的进行创建该数据库,下面例子中:xk是不存在的库名,goods是集合名,

           可自己直接写,进行创建,这样数据库和集合都创建完毕:

如果不对该数据库进行任何的操作,该数据库不会创建成功。

4、删除数据库:(必须先选择数据库,再删除)

5、查看数据库状态:db.stats() ---选择数据库,再查看

6、查看数据库相关帮助信息

 

三、集合的操作

1、查看当前数据库已有的集合 show tables; 或show collections;

2、集合的创建:

注意:如果use了一个不存在的数据库,依旧可以在里面创建集合。

system.indexes是系统自带的。

3、集合的删除

如果删除一个不存在的集合,则返回false。

4、创建集合,插入文档

① 注意:可以use一个不存在的数据库,然后,直接使用db.集合名.insert()语句进行插入数据信息。

② 也可以下面这样一步一步的来:(字典形式) 用 find 查询内容

说明:插入记录成功以后,mongodb会默认为每一个文档都添加一个_id的字段,并且同一集合中的_id是唯一的。

5、查看集合里的具体数据:

db.集合名.find()

下面这种查出来美观:

6、集合的命名:

① 不能是空字符串(“ ”)

② 不能包含\0字符(空字符)

③ 不能使用system.的前缀(系统保留)

④ 建议不包含保留字 ”$”

⑤ 用.分割不同命名空间的子集合(如:blog.users, blog.posts)

四、写入数据 ” ”记住都写上,省着分写上还是不写

内容里必须都加上({ })

1、普通数据的添加

Json格式 Bson格式,类json格式

 插入多条数据

一条一条的这种形式多次插入数据:

这种插入数据,键可写“”,也可不写“”最好都写上

一次性插入多条数据:

语法格式:db.goods.insert([{},{},{}.......]) 键值都加“”号

2、多维数据对象添加:db.goods.insert({{} })  {}里嵌套{ }

3、 数组信息的添加db.goods.insert({{} ,[ ] })

五、保存数据(修改数据)

语法:db.集合名称.save(文档)

特点:_id如果数据不存在则添加,如果数据存在则修改。(_id不写,也会默认添加,如果修改必须加_id)

如果在保存数据的时候,所指定的id是存在的,则是修改数据

六、数据查询

1、笼统方式查询

① db.数据表.find()           查询数据表的全部数据

② db.数据表.findOne()       查询数据表的第一条数据

③ db.数据表.find().pretty()    以美观的方式输出

2、条件限制查询(只要是条件都必须加{})

① db.数据表.find(条件)

② db.数据表.findOne(条件)

有相同信息时,返回满足结果里的第一条信息

3、范围条件查询

关键字:$gt   $lt    $gte   $lte

注意:关键字$gt左右必须有引号,命令行:单双引号都可以

① $gt大于

     查找集合中价格大于1200的

② $gte大于等于

   查找集合中价格大于等于1200的

③ $lt小于

  查找集合中价格小于1999的

④ $lte小于等于

  查找集合中价格小于等于1999的

4、设置多个查询条件

①例如:价格大于1000,并且重量等于50

db.goods.find({price:{'$gt':1000},weight:50})

②例如:价格小于等于1999并且重量大于134

5、多维字段的查询{{}})有嵌套时必须加 ’’

①db.表.find({‘key.name’:值})

注意:key.name必须要使用引号进行引住。

② db.表.find({key.name:{‘$gt’:值}})

③ db.表.find({key.name:{‘$gt’:值},key2.name2:{‘$lt’:值}})

6、数组条件的限制(里面有数组[ ],满足一个条件即可)

① db.表.find({数组的那个字段名:val})

这种形式的:

//查询颜色有红色记录条数,满足一个元素即可

② 这种查法是color必须只有黑、白、红,而且顺序必须是存储文档的那个顺序。

③ db.表.find({字段(数组):{‘$all’:[v1,v2]}})  

//只要同时满足有黑色和白色就可以查询出来

7、限制查询字段(查询部分字段

 db.表.find({条件},{字段:1/0,字段:1/0}

1: 查询此字段

0: 排除此字段

find()方法的第一个参数必须要有,如果没有条件的话,就是{}

① 只查询name字段:

注意:_id这个字段是默认显示出来的。如果不想让_id这个字段显示出来,可以下面这样:

规则:要输出就全部输出,要不输出就全部不输出;_id除外,可以随意设置0,1 ;一个0一个1报错:要是0都是0,要是1都是1。

设置为全部输出

设置为全部不输出

② $or查询,多个条件,满足其一即可

③ $in和$nin:在数组/不在数组

④ $all 查询:表示完全匹配

$in 与 $all的区别

使用$in进行查询:只要含有数组里的就行。

再使用$all进行查询:数组里的必须同时满足才行:必须是数组

8、(了解)自定义条件:$where

$where:通过函数自定义条件[JS函数],在指定的函数中,返回boolean类型的值,this表示每个要查询的文档。

9、数据查询---限制查询条数

  限制查询5条记录  

10、数据查询--跳过记录行数,(从1开始数的)

下面命令的意思是说:skip(2)是跳过前两行记录,limit(2)显示后面的两条记录。

从第三条信息开始显示的,且只显示2条

11、分页查询(重点

现在我想显示第5页的数据:

第一页的数据是:0  1

第二页的数据是:2  3  

第三页的数据是:4  5

第四页的数据是:6  7

第五页的数据是:8  9

所以skip()方法里面的参数值的公式:2(n-1)  

12、数据查询---排序

① 1表示升序:

按照价格升序

② -1表示降序:

按照价格降序:

13、数据查询---统计个数 count

14、数据查询--去重  distinct

给价格去重:

即给价格去重,又满足数字为45的

七、修改数据

1、有$set的修改:只修改设置的字段,其他字段不变化

把名字为小花的修改成name为小刚

F5视图软件刷新一下,可看见改了数据

2、没有$set的修改:只修改设置的字段,没有修改的字段就会删除了(除了_id字段)

八、删除数据  remove

1、一次删除多条数据(有多条符合条件的数据都删掉),

由于默认为false,所以可以省略此参数

2、一次只删除一条数据:加上true

3、清空所有的数据

4、删除字段  $unset

db.表.update({条件},{‘$unset’:{字段:1/字段:0}})

注意:设置的字段0或是1都是可以进行删除此字段的。

现在再查看:会看到把name 和price字段删了

九、扩展:修改数据

MongoDB这个产品是基于js引擎开发出来的。

1、修改器的使用($set、$inc等

① 通过修改器$set将zs3的年龄修改为33,其它值不变

注意:修改器名称的引号可加可不加,在这里统一下,添加上吧。

② 给zs10的年龄增加两岁  $inc

③ 第三个参数的使用  true

当我们再修改数据时,如果没有符合条件的,就直接新增加一条数据。

不写第三个参数时,默认false,不添加。

写上true,会添加上数据

④ 测试一次修改多条(第四个参数的使用)

如果一次性有多条数据满足要求时,那么第四个参数设为true时,就全部修改了。

也就是:第四个参数:默认false,只修改一条为true时,修改多条数据。

把name为zs2的age修改为250:

2、练习实例

① 查询所有的男生数据(只需要学生的姓名和年龄)

限制字段查询:

② 查询成绩及格的学生信息(学生成绩大于或等于60分)

③ 查询所有18岁的男生和16岁的女生的数据

④ 按照学生的年龄进行排序

    升序

  降序

⑤ 将所有的学生年龄增加2岁(每个增加一遍)

格式:给zs10这个同学年龄增加2岁,其它的同学再写

猜你喜欢

转载自blog.csdn.net/xk1761299425/article/details/82054383