MongoDB数据库基本查询语句

一、选择数据库和表

1、选择数据库,db即代表当前数据库

MongoDB数据库基本查询语句_第1张图片

2、表

MongoDB数据库基本查询语句_第2张图片

二、简单查询操作 => find()

1、查询语法:

db.表名.find();和db.getCollection(“表名”).find();语句效果一样

2、查询指定列

MongoDB数据库基本查询语句_第3张图片

3、查询条件

(1)等于条件 下面条件 => 相当于:where name = “只因”
MongoDB数据库基本查询语句_第4张图片
(2)不等于条件 下面条件=>相当于:where name != “只因”

MongoDB数据库基本查询语句_第5张图片
(3)and条件下面条件 =>相当于:where name = “只因” and sex = “男”
MongoDB数据库基本查询语句_第6张图片
(4)or条件 下面条件=>相当于:where name = “只因” or sex = “男”
MongoDB数据库基本查询语句_第7张图片
(5)比较条件: $gt:大于 、 $lt:小于 、 $gte:大于等于 、 $lte:小于等于
MongoDB数据库基本查询语句_第8张图片
(6)in和not in 条件 : $in 和 $nin
MongoDB数据库基本查询语句_第9张图片
(7)模糊查询: 下面条件=> 相当于 where hobby like ‘%唱%’
MongoDB数据库基本查询语句_第10张图片

使用模糊查询时,查询的值不能用引号括起来
查询以某个值开头的:/^值/
查询以某个值结尾的:/值&/
(8)查询N条数据 下面条件 => 相当于select top N * from table
MongoDB数据库基本查询语句_第11张图片
(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}} 
	} 
])

你可能感兴趣的:(数据库,mongodb,nosql)