6月27号实训报告——Mongodb复杂查询
Posted godlovesme
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了6月27号实训报告——Mongodb复杂查询相关的知识,希望对你有一定的参考价值。
项目里使用了Mongodb作为数据库,不同于mysql,这是一个非关系型数据库,因此不能使用SQL
下面是我对NoSQL的学习
条件查询
第一个花括号
查找全部
db.users.find()
复制代码
精准查找
db.users.find({"name":"zhangsan"})
复制代码
精准查找
db.users.find({"name":"zhangsan"})
复制代码
,>=,<,<= 查找
大于 : db.users.find({"name":{$gt:"q"}})
大于等于 : db.users.find({"name":{$gte:"q"}})
小于 : db.users.find({"name":{$lt:"q"}})
小于等于 : db.users.find({"name":{$lte:"q"}})
复制代码
多个条件并且关系 查找
db.users.find({"name":"zhangsan","age":20}) //不同key
db.users.find({"age":{$gte:25,$lte:28}}) //相同key
复制代码
多个条件或许关系 查找
db.users.find({ $or:[{age:24},{age:28}] })
复制代码
模糊查询
模糊查询 : db.article.find({"title":/女装/})
以什么开头 : db.users.find({title:/^女装/})
复制代码第二个花括号
查询指定列
单列 : db.users.find({},{name:1})
多列 : db.users.find({age:{$gte:25}},{name:1,age:1})
复制代码功能
排序
正序 : db.users.find({},{}).sort({age:1})
倒序 : db.users.find({},{}).sort({age:-1})
复制代码
限制
查询前五条数据 : db.users.find({},{}).limit(5)
跳过两条,查询后面三条数据 : db.users.find({}).skip(2).limit(3)
分页方法 : 分页 skip-1 * limit
复制代码
统计
db.users.find({ age:{$gte:24} }).count()
复制代码高级查询 aggregate
Aggregation 管道操作符与表达式
管道操作符
Description
$project
查询字段进行筛选
$match
条件匹配。只满足条件的文档才能进入下一阶段
$limit
限制结果的数量
$skip
跳过文档的数量
$sort
条件排序
$group
条件进行分组和统计
$lookup
$lookup 操作符 用以引入其它集合的数据(表关联查询)
SQL 和 和 NOSQL 对比
SQL
NOSQL
SELECT
$project
WHERE
$match
GROUP BY
$group
HAVING
$project
ORDER BY
$sort
LIMIT
$limit
SUM()
$sum
COUNT()
$sum
join
$lookup
每个管道表达式 看上面官方图,$group中的求和表达式。
常用表达式操作符
Description
$addToSet
将文档指定字段的值去重
$max
文档指定字段的最大值
$min BY
文档指定字段的最小值
$sum
文档指定字段求和
$multiply
文档指定两个字段求乘
$avg BY
文档指定字段求平均
$gt
大于给定值
$lt()
小于给定值
$eq()
等于给定值
聚合管道格式
db.order.aggregate([
{
$project:{ trade_no:1, all_price:1 }
},
{
$match:{"all_price":{$gte:90}}
},
{
$limit:1
},
{
$skip:1
},
{
$sort:{"all_price":-1}
},
{
$group :{_id:"$order_id",totalNum:{$sum:"$num"},totalPrice: { $sum: { $multiply: [ "$price", "$num" ] } } }
},
{
$lookup:
{
from: "order_item",
localField: "order_id",
foreignField: "order_id",
as: "items"
}
}
])
以上是关于6月27号实训报告——Mongodb复杂查询的主要内容,如果未能解决你的问题,请参考以下文章
6月26号实训报告——使用docker构建镜像并进行分布式部署