MongoDB 学习三(数据库的增删改查)

来源:互联网 发布:r语言编程艺术 pdf 编辑:程序博客网 时间:2024/04/27 01:05

接昨天的内容学习,首先做一个回顾:


开始今天的内容:

1、删除文档数据

昨天说过删除文档的方法,今天补充几点:

db.persons.remove({name:"fanhu"})  //删除当前数据文档中包含这条内容的数据,_id 一块被删除。
db.persons.remove()  //删除persons下的所有数据,_id 是保存下来的,只是数据没有了。

tips:如果要删除的集合数据量很大,直接删除该集合(见下一条)并重新建立索引的方法比直接使用 remove 效率高很多。

2、删除库中的集合(这里把persons这个数据文档删除掉)

db.persons.drop()    
再来查看
show collections  --->这时候foobar这个数据库中已经没有persons这个数据文档了,当该数据库中的数据文档都被删除后foobar这个数据库也会被自动删除

3、删除数据库

db.dropDatabase()

4、数据库级别的help  (要学会查看帮助和官方文档)


show dbs  //查看所有数据库
上面我们把foobar这个数据库删除掉了,这里再重新创建一次,就当复习了。

创建完成后,这里直接使用 db.help() 会列出一堆方法,后面再详细的去学。


先试试 db.getName()   ---> foobar   //得到当前的数据库名字
db.stats()   ---->    //得到当前数据库的状态 不要写错了,不是status啊。


5、数据文档集合的help


db.persons.help()    ---> 同样会列出一堆方法。

6、数据库和集合的命名规范


 ①:不能是空字符串 ②:不能含有 引号、逗号、空格、斜杠以及各种奇怪字符,总之作为一名程序员,我相信你懂得。这个短横线是可以使用的,但是最好别用,容易被当成减号处理,需要设置之后再用,所以没必要给自己添麻烦。 ③:全部小写,并且不能和系统保留库同名,如admin、local、config ④:最多64个字节

7、可以使用内嵌文档并且支持数组

db.persons.insert({age:"27",study:{year:2016,month:12}})


db.persons.insert({age:"27",study:[1,23,22]})


8、批量插入文档

使用shell的for循环


9、save操作

save和insert的区别就在于当遇到  _id 相同的情况,前面说过,每条数据都会自动生成一个 _id 来作为唯一标识。

我们现在插入一条数据:db.psersons.insert({_id:0001},{name:"fanhu"})
然后再来插入一条数据:db.persons.insert({_id:0001},{name:"huzi"})
因为两条数据的 _id 相同,然后就报错了。



如果我们使用save就不会出现这种情况,当遇到 _id 相同的情况,会当做更新来处理。



10、更新文档

昨天讲了db.persons.update(),再来做个例子:


①:我们本想更新数据 { "_id" : ObjectId("5864e6819a74ca578c124615"), "username" : "fanhu" }
再添加上一条数据的,结果被直接替换为{ "_id" : ObjectId("5864e6819a74ca578c124615"), "age" : 27 },因此这种方法也叫做强制替换。

②:我们上面说过 update() 有两个参数,第一个查询器,第二个是修改器,如果原来文档中有一条数据,而我想跟新之后的效果是,原来有的数据就进行更新操作,没有的数据就进行插入操作,这时候要用到第三个参数 ,true或false,也就是update(查询器,修改器,true)

③:还有昨天说过的使用 $set 修改器 能够实现同样的效果。

下面再说几个修改器:

④: $inc 修改器:自动的增加或减小一个数,直接上例子:



⑤:$unset修改器:删除数据文档中的一个键。



此时第二条数据中已经没有了 height 这一条。

⑥:$push修改器:如果指定的键是数组,则追加新的数组。如果指定的键不是数组,则中断当前的操作。如果不存在指定的键,则创建数组类型的键值对。  看例子:



⑦:$pushAll修改器:批量追加

语法: db.persons.update({name:"fanhu"},{$pushAll{ 要追加到的数组名 : [ 这里是要追加的数组 ]}})

⑧:$addToSet 修改器:目标数组存在该项内容则不进行操作,不存在就追加进去

语法: db.persons.update({name:"fanhu"},{$addToSet:{ 目标数据:要追加的内容}})  


可以看到我们第一次并没有执行修改,第二次进行了追加。

⑨:$pull 修改器:删除数组中的某一项

语法:db.persons.update({name:"fanhu"},{$pull:{要从哪个数组中删除 : "要删除的项"}})


此时数组books中已经没有js11111这一项。

⑩:$pullAll 修改器:批量删除数组中的项

语法:db.persons.update({name:"fanhu"},{$pullAll:{ 要从哪个数组中删除 : ["要删除的项1","要删除的项2"]}})

11、批量更新

上面说到了update的三个参数,这里要用到第四个参数,也是true或false。
tips:如果要使用第四个参数进行批量跟新,得配合$set这个修改器进行操作,直接上例子:



0 0
原创粉丝点击