内容简介:MongoDB的查询功能非常强大,同时有些地方也会有点复杂。所以需要下点功夫学习和操练才能用好。当我们进入
参考官方文档(图文并茂非常好看):Getting Started - MongoDB Documentation
MongoDB的查询功能非常强大,同时有些地方也会有点复杂。所以需要下点功夫学习和操练才能用好。
关于Mongo Shell
当我们进入 Mongo Shell 客户端后,实际上是进入了一个 Javascript语言 的交互环境。
也就是说,MongoDB中的很多命令,尤其是包括定义函数等高级命令,实际上都是Javascript语言,甚至说可以是 jQuery 。
了解了这点,一些高级命令如Aggregation学起来就会放松很多。
官方说明:
基本查询功能
比较运算
: $lt $gt $gte $ne
# age大于等于18
db.mycollection1.find( { age:{$gt: 18} } )
逻辑运算
$and $or
db.mycollection1.find( {
$or: [
{ age: {$gte: 20} },
{ salary: {$gt: 5000} },
{ job: "HR" }
]
} )
范围运算
$in $nin
db.mycollection1.find( {
age: {
$in: [10, 20, 30]
}
} )
正则表达式
有两种方法:
/表达式内容/
{$regex: "表达式内容"}
db.mycollection1.find( {
name: /^Ja\w+$/
} )
# 或
db.mycollection1.find( {
name: {
$regex: "/^Jaso\w?$"
}
} )
limit和skip
# 限定显示条数 db.mycollection1.find().limit(数量) # 跳过指定第几条数据 db.mycollection1.find().skip(2) # 混合使用 db.mycollection1.find().limit(10).skip(3)
自定义函数查询
自定义查询是指使用自定义函数,格式为 $where: function(){...}
db.mycollection1.find( {
$where: function() {
return this.age >= 18;
}
} )
投影
即搜索的返回值中,只显示指定的某些字段。字段指为0的不现实,指为1的显示,默认为1。
# 格式为:
db.mycollection1.find(
{查询条件},
{显示与否的选项}
)
# 如:
db.mycollection1.find(
{},
{ _id: 0, name: 1, age: 1 }
)
排序
可以按指定的某些字段排序,字段标记为1的为Asc升序,标记为-1的为Desc降序。
db.mycollection1.find().sort({ name:1, age:-1 })
统计
使用count()函数。
db.mycollection1.find().count()
db.mycollection1.count( {查询条件} )
消除重复
使用distinct()函数。
# 格式为:
db.集合名.distinct( "指定字段", {查询条件} )
# 如
db.mycollection1.distinct(
"job",
{ age: {$lt: 40} }
)
聚合管道 Aggregation
Aggregation是 MongoDB 特有的一种Pipline管道型、聚合查询方式。语法稍微复杂一些。
聚合管道可以达到多步骤的分组、筛选功能。这个管道中的每一个步骤,成为一个 stage 。
常用的管道有:
-
$match:简单的根据条件过滤筛选 -
$group:将数据分组,一般配合一些统计函数,如$sum。 -
$project:修改document的结构。如增删改,或创建计算结果 -
$lookup: -
$unwind:将List列表类型的Document进行拆分 -
$sort -
$limit -
$skip
语法格式为:
db.集合名.aggregate( [
{管道表达式1},
{管道表达式2},
{管道表达式2}
] )
示例:
db.Orders.aggregate( [
{$match: {
status: "A"
} },
{$group: {
_id: "$cut_id",
total: { $sum: "$amount" }
} }
] )
管道的Map Reduce
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Mybatis关联查询(嵌套查询)
- MySQL高级查询---连接查询实例
- Oracle子查询相关内容(包含TOP-N查询和分页查询)
- Laravel Query Builder 复杂查询案例:子查询实现分区查询 partition by
- 打造出色查询:如何优化SQL查询?
- SQL优化-慢查询+explain查询
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
精通Java并发编程(第2版)
[西] 哈维尔·费尔南德斯·冈萨雷斯 / 唐富年 / 人民邮电出版社 / 2018-10 / 89.00元
Java 提供了一套非常强大的并发API,可以轻松实现任何类型的并发应用程序。本书讲述Java 并发API 最重要的元素,包括执行器框架、Phaser 类、Fork/Join 框架、流API、并发数据结构、同步机制,并展示如何在实际开发中使用它们。此外,本书还介绍了设计并发应用程序的方法论、设计模式、实现良好并发应用程序的提示和技巧、测试并发应用程序的工具和方法,以及如何使用面向Java 虚拟机的......一起来看看 《精通Java并发编程(第2版)》 这本书的介绍吧!
JSON 在线解析
在线 JSON 格式化工具
图片转BASE64编码
在线图片转Base64编码工具