MongoDB数据库基本查询语句
包含find(),aggregate()查询
·
一、选择数据库和表
1、选择数据库,db即代表当前数据库
2、表
二、简单查询操作 => find()
1、查询语法:
db.表名.find();和db.getCollection(“表名”).find();语句效果一样
2、查询指定列
3、查询条件
(1)等于条件 下面条件 => 相当于:where name = “只因”
(2)不等于条件 下面条件=>相当于:where name != “只因”
(3)and条件下面条件 =>相当于:where name = “只因” and sex = “男”
(4)or条件 下面条件=>相当于:where name = “只因” or sex = “男”
(5)比较条件: $gt:大于 、 $lt:小于 、 $gte:大于等于 、 $lte:小于等于
(6)in和not in 条件 : $in 和 $nin
(7)模糊查询: 下面条件=> 相当于 where hobby like ‘%唱%’
使用模糊查询时,查询的值不能用引号括起来
查询以某个值开头的:/^值/
查询以某个值结尾的:/值&/
(8)查询N条数据 下面条件 => 相当于select top N * from table
(9)去重 相当于 select distinct xxx from table
三、聚合查询 => aggregate()
1、MongoDB aggregate() 聚合管道
各字段释义
管道操作符 | 释义 |
---|---|
$project | 增加、删除、重命名字段 |
$match | 条件匹配。只满足条件的文档才能进入下-阶段 |
$sort | 排序(1正序,-1倒序) |
$limit | 限制查询条数 |
$group by | 条件分组查询,汇总 |
$lookup | 连表查询 |
与SQL语句对比
SQL | MongoDB |
---|---|
WHERE | $match |
GROUP BY | $group by |
HAVING | $match |
SELECT | $project |
ORDER BY | $sort |
LIMIT | $limit |
SUM() | $sum |
Count() | $sum |
join() | $lookup |
基本语法
//自我理解
db.表名.aggregate(
//数组,可放多个管道操作符
[
//对象里放一个管道操作符,这里有3个
{//1
$match : { "xxx" : {$lt : yyy } }
},
{//2
$limit : 20
},
{//3
$sort : { "xxx" : -1 }
}
]
)
2、连表查询 $lookup
db.表名.aggregate(
[
{
"$lookup": {
"from": "被关联表名",
"localField": "主集合的键名",
"foreignField": "被关联表的键名",
"as": "别名"
}
}
]
)
3、分组查询 $group
db.表名.aggregate({
$group: {
_id: "$列名",
"别名" : {"$计算公式" : xx }
}
});
一些计算公式:
(1)、求和$sum、求平均值 $avg
db.表名.aggregate({
$group: {
_id: 任意值,
"别名": {
$sum: "$列名" ($sum : 1 为计数)
//$avg: "$列名"
}
}
});
(2)、求最小值最大值 $ min、$max
db.表名.aggregate({
$group: {
_id: 任意值,
"别名": {
$min: "$列名"
//$max: "$列名"
}
}
})
4、修改返回数据的结构 $project
db.表名.aggregate(
{
$project : {
_id : 0 //不显示该列
name : 1 //显示该列
myage : '$age' //将age列名改为myage显示
arr : ["$a.obj1","$a.obj2"] //也可以返回一个数组显示
}
}
)
5、条件匹配 $match
//相当于find()中的条件参数
db.mytable.aggregate([
{
$project:{ name :1, age :1, _id : 0}
},
{
$match:{ age:{$gte:20}}
}
])

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)