MongoDB随手笔记(二)

一.文档的嵌套添加 MongoDB随手笔记(二)
文章图片

现在给数据库中age:“2”的文档对象添加一个属性,叫爱好(hobby),hobby里又分成 游戏(game),运动(sport),运动和游戏中又包括了英雄联盟,篮球之类的选项。首先这肯定牵扯的是添加这个属性,毋庸置疑选择db.grade.update
MongoDB随手笔记(二)
文章图片


tips: 在终端里没有错误提示,需要特别注意一下花括号的位置和数量,你敲下{前括号的时候,终端并不会给你补齐}后花括号.
二.嵌套文档的查询方法 也就是说现在你只知道有个用户的爱好hobby是喜欢运动(hobby.sport:"run")那么find方法如何去查询嵌套文档?
也许你会这样写:db.grade.find({hobby.sport:"run"})
MongoDB随手笔记(二)
文章图片

结果是报错了此时需要注意,我们需要在hobby.sport外加上一个引号。
MongoDB随手笔记(二)
文章图片

三.查询的一些额外方法 (不仅仅是这些) MongoDB随手笔记(二)
文章图片


这些id是否太长了,我查询的时候不需要它显示出来。find()可以接收两个参数.
你没有什么特殊的查询条件的话,第一个参数设置为空对象,第二个参数设置你不想查询的属性为0.同理,如果你想看到某个属性的话,设置为1即可,默认find()第二个参数全为1。
MongoDB随手笔记(二)
文章图片

四.嵌套文档属性的添加 MongoDB随手笔记(二)
文章图片

现在有一个需求,我想在sport里添加一个ball。到这里,我第一步马上会想到update
然后敲下如下的命令
MongoDB随手笔记(二)
文章图片

注意. 你能想到这里,说明你前面的方法掌握的不错,但是让我们继续研究一下这行代码。
首先set是用来修改文档属性的值的,你这样做是吧[“run”]这个数组修改为了一个字符串"ball"这样是会引起很大的错误。
ok分析问题,sport的属性是一个数组,快想一想,JS代码,数组,JS代码,数组?往数组里添加那不就是push吗?是的,这时候我们只需要更换一下修饰符即可 $set修改为$push。结果如下。相对应的删除最后一个值是$pop
MongoDB随手笔记(二)
文章图片

push方法有一个弊端,它不会考虑你的数组中是否已经存在这个值,
MongoDB随手笔记(二)
文章图片

【MongoDB随手笔记(二)】可以看到上面sport里有两个ball,那么如何避免呢?就需要用到$addToSet$addToSetpush的区别就是会查询是否重复,如果重复则无事发生。d
让我们先简单删除一下最后一个"ball",在这里要明白,我要删除了,那么这个属性的值对我来说已经无关紧要了,直接删除对应的属性即可。删除我就只需要数组的索引就好,对于pop来说,是数组的最后开始计数,1就是最后一个,相反-1就是索引为0的数组第一个元素。
MongoDB随手笔记(二)
文章图片

接下来继续添加一个ball
MongoDB随手笔记(二)
文章图片

你会看到匹配到了一个文档,但是并没有修改。这里特别提示一下即便是age的值是数字,双引号也不可以省略。
五.条件查询 1.大于小于等于 MongoDB随手笔记(二)
文章图片

2.想要查询大于100,或者大于200的数字
需要用到$or查询符

db.number.find($or[{number:{$lt:"100"},{number:{$gt:"200"}}}])
3.仅仅只想显示所有文档的name属性,通过给find第二个参数来限制,_id默认情况会一直显示。
MongoDB随手笔记(二)
文章图片

4.升序或者降序sort()

这个需要用到sort方法,使用场景很多,比如价格的排序或者销量的排序。
db.people.find({}).sort({salary:1})表示按照工资升序排列
演示一下以age从小到大或者从大到小排列1表示从小到大,也就是升序,-1相反
需要注意的是,如果某些文档没有该属性,那么默认值为0,也会参与升降排序
MongoDB随手笔记(二)
文章图片

<sort limit skip >在代码书写时先后顺序是无所谓的,都会先sort,skip,然后limit
六.网页页数的实现原理 如果想查询数据库前10条数据,db.collection.find().limit(10)limit是限制的意思。
如果想跳过前五条数据,那么就要执行db.collection.find().skip(5).limit()


网页页数的实现效果
MongoDB随手笔记(二)
文章图片

这里不需要区分skip方法,和limit方法的顺序mongoDB会自动让skip在limit之前执行

    推荐阅读