【有书共读】MongoDB实第二版第五章

格式优化了文字同等的内容部分可以查看博文https://blog.csdn.net/YuYunTan/article/details/85317055
第24期牛客有书共读栏目《MongoDB实战(第二版)》


MongoDB实战第二版笔记(6)第五章笔记

1、find方法返回一个光标(对象),而findOne方法返回一个文件。

2、通过find返回结果集上调用skip和limit实现分页。它们在查询被调用后出现,而排序和限制参数发送至查询兵由MongoDB服务器处理,这种语法模式被称为方法链接,旨在更容易生成查询语句。

db.products.find({..}).sort({..}).skip(...).limit(..)

3、skip、limit和sort顺序在JavaScript shell中不重要。这些查找可以使用索引,标签拥有唯一索引,因为它们提供备用主键,而所有_id字段自动获取标准合集的唯一索引。

4、当访问根级目录时不会显示任何商品。针对查询的类别集合的父ID为nulll查询,搜索结果是根级别类别。

5、用投影返回限制字段。需要额外的参数:想得到的一个值为1的哈希字段。示例限制返回字段是_id的。

db.users.findOne({...},{'_id':1})

<6、MongoDB允许正则表达式查询,例如'/^Ba/'即以Ba为前缀的字符串,然后作为搜索条件。

7、MongoDB所有文本字符串匹配是区分大小写,不区分则使用正则表达式。

8、范围查询运算符

运算符 描述
$lt 小于
$gt 大于
$lte 小于等于
$gte 大于等于

9、一般不存储多种类型为同一集合的密钥

10、集合查询运算符

操作符 描述
$in 如果任意参数在引用集合里,则匹配
$all 如果所有参数在引用集合里且被使用在包含数组的文档中,则匹配
$nin 如果没有参数在引用集合里,则匹配

11、使用$in 运算符的另一种方法是作为布尔的包容性或者对单一属性。选择性是一种使用索引缩小查询结果的能力。$ne$nin运算符不是选择的,因此当使用集合运算符,$in$all可以利用索引,但$nin不能因此而要集合浏览,若要使用则试图结合另一个使用索引的查询项。

12、布尔运算符

操作符 描述
$ne 不匹配参数条件
$not 不匹配结果
$or 有一个条件匹配就成立
$nor 不匹配参数条件
$and 不匹配参数条件
$exists 不匹配参数条件

查找Acme制造的所有没有gardening标签的商品:

db.products.find({'detail.manufacturer':'Acme',tags:{$ne:"gardening"}})

13、查询匹配一个实体对象时,关键字顺序很重要。哈希在ruby1.8中不会保留顺序,要保留则需要使用类的对象BSON::OrderedHash代替。

14、数组用于存储字符串列表、对象IDs,甚至其他的文档。数组提供丰富又易于理解的文档。最简单的数组查询看起来就像查询任何其他文档类型

15、数组操作符

操作符 描述
$elemMatch 如果提供的所有词语在相同的子文档中,则匹配。匹配多个或更多属性的子文档使用
$size 如果子文档数组大小与提供的文本值相同,则匹配。

16、可以对特定位置的数组使用点符号查询值。

db.users.find({'addresses.0.state':"NY"})

示例中addresses是数组,数组的第0个元素是用户的配送地址。
17、$where执行任意JavaScript来选择文档,JavaScript中this指向当前文档。
18、$regex匹配元素对应提供给regex(正则表达式)项。

20、正则表达式查询不能使用索引并且执行的世界比大多数选择器更长,建议节制性地使用。

21、如果本地不支持正则表达式类型环境,则需要$regex$options运算符

db.reviews.find({
    'user_id':...,
    'text':{
        '$regex':"best|worst",
        '$options':"i"
    }
})

22、其他查询运算符

运算符 描述
$mod[(quotient),(result)] 如果元素除以除数符合结果则匹配
$type 如果元素的类型符合指定的BSON类型则匹配
$text 允许在建立文本索引的字段上进行文笔搜索。

$mod有两个值,第一个是除数,第二个是预期的余数。

23、BSON类型
图片说明

24、BSON类型中,maxkey和minkey用于在索引中插入相同的最大或最小的虚拟值。这意味着可以强制文档排序为索引的第一个或最后一个项目。

25、可以映射来选择子集的字段用来返回每个文档的查询结果合集。

  • $slice 选择返回文档的子集

映射被定义为返回字段合集。

db.users.find({},{'username':1})

只返回包含username和_id的用户文档。

排除相反字段,则映射为0。

db.users.find({},{'addresses':0,'payment_methods':0})

将返回值范围存储到一个数组。返回前12条评论或后5条。

db.users.find({},{'reviews':{$slice:12}})
db.users.find({},{'reviews':{$slice:-5}})

可取两个元素的数组,分别表示返回跳过和限制页数。

跳过前24条评论且限制评论为12条

db.users.find({},{'reviews':{$slice:[24,12]})

26、一个或多个字段升序或降序排序。下面是降序例子

db.reviews.find({}).sort({'rating':-1})
db.reviews.find({}).sort({'helpful_votes':-1,rating':-1})
#MongoDB#
全部评论

相关推荐

勤奋努力的椰子这就开摆:美团骑手在美团工作没毛病
投递美团等公司10个岗位
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务