当前位置: 首页 > Web前端 > HTML

MongoDB随手记(二)

时间:2023-03-27 22:48:55 HTML

1、文档的嵌套添加现在给数据库中的文档对象添加一个属性,年龄为:“2”,叫做爱好(hobby),爱好分为游戏(game),运动(sport),运动和游戏包括英雄联盟、篮球等选项。首先,这肯定涉及到添加这个属性,毫无疑问选择了db.grade.update。提示:终端中没有错误信息。您需要特别注意花括号的位置和数量。当您键入{前括号时,终端不会为您填写后括号}。2、嵌套文档的查询方法也就是说,现在你只知道有一个用户喜欢运动(hobby.sport:"run"),那么find方法是如何查询嵌套文档的呢?可能你会这样写:db.grade.find({hobby.sport:"run"})结果是报错。这个时候需要注意,我们需要在hobby.sport外面加一个引号。3、查询的一些额外方法(不只是这些)这些id是不是太长了,我查询的时候不需要显示出来。find()可以接收两个参数。如果你没有什么特殊的查询条件,第一个参数设置为空对象,第二个参数设置为0表示你不想查询的属性。同理,如果要查看一个For属性,设置为1,find()的第二个参数默认全为1。4.嵌套文档属性的添加现在有一个需求,我想在运动中添加一个球。此时,我的第一步是立即想到update然后输入以下命令进行关注。如果你能想到这一点,说明你已经很好地掌握了前面的方法,但是我们继续研究这行代码。首先,set用于修改文档属性的值。你这样做吗?["run"]这个数组改成字符串"ball",会造成很大的错误。ok分析问题,sport的属性是一个数组,赶紧想一想,JS代码,数组,JS代码,数组?加入数组不是push吗?是的,此时我们只需要修改修饰符,将$set改为$push即可。结果如下。最后一个值的相应删除是$poppush方法的缺点。它不考虑这个值是否已经存在于你的数组中。可以看到上面的运动中有两个球,那么如何避免呢?您需要使用$addToSet。$addToSet和push的区别在于它会检查是否重复。如果重复,则不会发生任何事情。d让我们先简单地删除最后一个“球”。这里要明白,如果我要删除,那么这个属性的值与我无关,删除对应的属性即可。要删除,我只需要数组的索引。对于pop,就是数组的最后一个数,1是最后一个,-1是索引为0的数组的第一个元素。接下来继续加球,会看到匹配到一个文档,但是它没有被修改。这里特别提醒一下,即使age的值是数字,双引号也不能省略。五。条件查询1.大于等于2.如果要查询大于100或者大于200的数,需要使用$or查询字符db.number.find($or[{number:{$lt:"100"},{number:{$gt:"200"}}}])3.只想显示所有文档的name属性,通过给find的第二个参数来限制,_id会一直显示默认。4.升序或降序sort()这个需要用到sort方法,使用场景很多,比如按价格排序或者按销量排序。db.people.find({}).sort({salary:1})表示按照薪水升序排列。我们来演示一下年龄是从小到大或者从大到小排列的。1表示从小到大,即升序排列,需要-1代替注意,如果有些文档没有这个属性,那么默认值为0,也会参与升序和降序排序。代码写的时候无所谓,先排序,跳过,再限制6.网页number的实现原理如果要查询数据库中的前10条数据,db.collection.find().limit(10)limit表示限制。如果要跳过前5条数据,需要执行db.collection.find().skip(5).limit()来达到网页数量的效果。不需要区分skip方法和limit方法的顺序。mongoDB会自动让skip在limit之前执行