PCB C# MongoDB 查询(SQL,NOSQL,C#对比)
一.准备阶段
1.查询数据清单准备
2.这里先将SQL语句执行顺序列出来,方便后面语句对比更好理解
(8)SELECT
(9)DISTINCT
(11)<Top Num> <select list>
(1)FROM [left_table]
(3)<join_type> JOIN <right_table>
(2) ON <join_condition>
(4)WHERE <where_condition>
(5)GROUP BY <group_by_list>
(6)WITH <CUBE | RollUP>
(7)HAVING <having_condition>
(10)ORDER BY <order_by_list>
二.查询全表
1. SQL:
select * from ppeflow
2. MongoDB NO SQL:
db.ppeflow.find()
3. MongoDB C#
IMongoCollection<ppeflow> ppeflows = db.GetCollection<ppeflow>("ppeflow");//指定数据库
FilterDefinitionBuilder<ppeflow> builderFilter = Builders<ppeflow>.Filter; //创建过滤
FilterDefinition<ppeflow> filter = builderFilter.Empty;//过滤为空
var resultList = ppeflows.Find(filter).ToList();//获取集合
三.查询数据总数
1. SQL:
select count(1) from ppeflow
2. MongoDB NO SQL:
db.ppeflow.find({}).count()
3. MongoDB C#
IMongoCollection<ppeflow> ppeflows = db.GetCollection<ppeflow>("ppeflow");//指定数据库
FilterDefinitionBuilder<ppeflow> builderFilter = Builders<ppeflow>.Filter; //创建过滤
FilterDefinition<ppeflow> filter = builderFilter.Empty;//过滤为空
var result = ppeflows.CountDocuments(filter); //获得集合数量
四.查询并排序
1. SQL:
select * from ppeflow order by orderid
select *from ppeflow order by orderid desc
2. MongoDB NO SQL:
db.ppeflow.find().sort({'orderid':1})
db.ppeflow.find().sort({'orderid':-1})
3. MongoDB C#
方式一
IMongoCollection<ppeflow> ppeflows = db.GetCollection<ppeflow>("ppeflow");//指定数据库
FilterDefinitionBuilder<ppeflow> builderFilter = Builders<ppeflow>.Filter; //创建过滤
FilterDefinition<ppeflow> filter = builderFilter.Empty;//过滤为空
var builderSort = Builders<ppeflow>.Sort.Ascending(t => t.orderid); //创建排序
var resultList = ppeflows.Find(filter).Sort(builderSort).ToList();//获取集合
方式二
IMongoCollection<ppeflow> ppeflows = db.GetCollection<ppeflow>("ppeflow");//指定数据库
FilterDefinitionBuilder<ppeflow> builderFilter = Builders<ppeflow>.Filter; //创建过
FilterDefinition<ppeflow> filter = builderFilter.Empty;//过滤为空
var resultList = ppeflows.Find(filter).SortByDescending(t => t.orderid).ToList();//获取集合
五.查询TOP前10条记录
1. SQL:
select top 10 * from ppeflow
2. MongoDB NO SQL:
db.ppeflow.find().limit(10)
3. MongoDB C#
IMongoCollection<ppeflow> ppeflows = db.GetCollection<ppeflow>("ppeflow");//指定数据库
FilterDefinitionBuilder<ppeflow> builderFilter = Builders<ppeflow>.Filter; //创建过滤
FilterDefinition<ppeflow> filter = builderFilter.Empty;//过滤为空
var resultList = ppeflows.Find(filter).Limit().ToList();//获取集合
六.查询从第6条到第10条记录(即:跳过前5条记录起的后5条记录)
1. SQL:
select * from ppeflow limit 5,5
2. MongoDB NO SQL:
db.ppeflow.find().skip(5).limit(5)
3. MongoDB C#
IMongoCollection<ppeflow> ppeflows = db.GetCollection<ppeflow>("ppeflow");//指定数据库
FilterDefinitionBuilder<ppeflow> builderFilter = Builders<ppeflow>.Filter; //创建过滤
FilterDefinition<ppeflow> filter = builderFilter.Empty;//过滤为空
var resultList = ppeflows.Find(filter).Skip().Limit().ToList();//获取集合
七.查询distinct去除重复字段
1. SQL:
select DISTINCT techname from ppeflow
2. MongoDB NO SQL:
db.ppeflow.distinct('techname')
3. MongoDB C#
IMongoCollection<ppeflow> ppeflows = db.GetCollection<ppeflow>("ppeflow");//指定数据库
FilterDefinitionBuilder<ppeflow> builderFilter = Builders<ppeflow>.Filter; //创建过滤
FilterDefinition<ppeflow> filter = builderFilter.Empty;//过滤为空
var resultList = ppeflows.Distinct(tt => tt.techname, filter).ToList();//获取集合
八.查询Group by分组
1. SQL:
select techname,count(1) as total from ppeflow group by techname
2. MongoDB NO SQL:
db.ppeflow.group({
key:{ "techname":true}
,initial: {techname:'',total: 0}
,reduce: function(doc, out)
{
out.techname = doc.techname;
out.total += doc.orderid;
}
})
3. MongoDB C#
//待完善
九.查询条件>,>=,<,<=,<>
1. SQL:
select techname from ppeflow where orderid > 10
select techname from ppeflow where orderid >= 10
select techname from ppeflow where orderid < 10
select techname from ppeflow where orderid <= 10
select techname from ppeflow where orderid <> 10
2. MongoDB NO SQL:
db.ppeflow.find({'orderid':{$gt:10}},{'techname':1}) db.ppeflow.find({'orderid':{$gte:10}},{'techname':1}) db.ppeflow.find({'orderid':{$lt:10}},{'techname':1}) db.ppeflow.find({'orderid':{$lte:10}},{'techname':1}) db.ppeflow.find({'orderid':{$ne:10}},{'techname':1})
3. MongoDB C#
IMongoCollection<ppeflow> ppeflows = db.GetCollection<ppeflow>("ppeflow");//指定数据库
FilterDefinitionBuilder<ppeflow> builderFilter = Builders<ppeflow>.Filter; //创建过滤
FilterDefinition<ppeflow> filter = builderFilter.Where(t => t.orderid > ); ;//过滤条件 改为对应的>=,<,<=,!=
var resultList = ppeflows.Find(filter).ToList();//获取集合
十.查询条件in与not in
1. SQL:
select * from ppeflow where orderid in (10,11,12)
select * from ppeflow where orderid not in (10,11,12)
2. MongoDB NO SQL:
db.ppeflow.find({'orderid':{$in:[10,11,12]}})
db.ppeflow.find({'orderid':{$nin:[10,11,12]}})
3. MongoDB C#
IMongoCollection<ppeflow> ppeflows = db.GetCollection<ppeflow>("ppeflow");//指定数据库
FilterDefinitionBuilder<ppeflow> builderFilter = Builders<ppeflow>.Filter; //创建过滤
var filter = builderFilter.In(tt => tt.orderid, new List<int> { , , });//In 条件 或Nin
var resultList = ppeflows.Find(filter).ToList();//获取集合
十一.查询模糊查询 like
1. SQL:
select * from ppeflow where techname like '%钻孔%'
select * from ppeflow where techname like '钻孔%'
select * from ppeflow where techname like '%钻孔'
2. MongoDB NO SQL:
说明:i 忽略大小写 m 多行匹配模式 x 忽略非转义的空白字符 s 单 匹配模式 db.ppeflow.find( { 'techname': /钻孔/i } ) db.ppeflow.find( { 'techname': /钻孔$/i } ) db.ppeflow.find( { 'techname': /^钻孔/i } )
3. MongoDB C#
IMongoCollection<ppeflow> ppeflows = db.GetCollection<ppeflow>("ppeflow");//指定数据库
FilterDefinitionBuilder<ppeflow> builderFilter = Builders<ppeflow>.Filter; //创建过滤
var filter = builderFilter.Regex(tt => tt.techname, new BsonRegularExpression("/钻孔/i")); //正则匹配
var resultList = ppeflows.Find(filter).ToList();//获取集合
十二.查询多条件逻辑 or与and
1. SQL:
select * from ppeflow where techname = '开料' or techname = '钻孔'
select * from ppeflow where orderid = 2 and techname = '钻孔'
2. MongoDB NO SQL
db.ppeflow.find({$or:[{'techname':'开料'},{'techname':'钻孔'}]})
db.ppeflow.find({$and:[{'orderid':2},{'techname':'钻孔'}]})
3. MongoDB C#
C# or
IMongoCollection<ppeflow> ppeflows = db.GetCollection<ppeflow>("ppeflow");//指定数据库
FilterDefinitionBuilder<ppeflow> builderFilter = Builders<ppeflow>.Filter; //创建过滤
var filter1 = builderFilter.Eq(tt => tt.techname, "开料");
var filter2 = builderFilter.Eq(tt => tt.techname, "钻孔");
var filter = builderFilter.Or(filter1, filter2);
var resultList = ppeflows.Find(filter).ToList();//获取集合
//ppeflows.AsQueryable().Where(tt => tt.techname == "开料" || tt.techname == "钻孔").ToList(); //lamda一种简写
C# and
IMongoCollection<ppeflow> ppeflows = db.GetCollection<ppeflow>("ppeflow");//指定数据库
FilterDefinitionBuilder<ppeflow> builderFilter = Builders<ppeflow>.Filter; //创建过滤
var filter1 = builderFilter.Eq(tt => tt.orderid, );
var filter2 = builderFilter.Eq(tt => tt.techname, "钻孔");
var filter = builderFilter.And(filter1, filter2);
var resultList = ppeflows.Find(filter).ToList();//获取集合
//ppeflows.AsQueryable().Where(tt => tt.orderid == 2 && tt.techname == "钻孔").ToList(); //lamda一种简写
PCB C# MongoDB 查询(SQL,NOSQL,C#对比)的更多相关文章
- Entity Frameword 查询 sql func linq 对比
Entity Framework是个好东西,虽然没有Hibernate功能强大,但使用更简便.今天整理一下常见SQL如何用EF来表达,Func形式和Linq形式都会列出来(本人更多在用Func形式,l ...
- mongodb查询语句与sql语句对比
左边是mongodb查询语句,右边是sql语句.对照着用,挺方便. db.users.find() select * from users db.users.find({"age" ...
- mongodb 跟踪SQL语句及慢查询收集
有个需求:跟踪mongodb的SQL语句及慢查询收集 第一步:通过mongodb自带函数可以查看在一段时间内DML语句的运行次数. 在bin目录下面运行 ./mongostat -port 端口号 ...
- mongodb与sql语句对比
左边是mongodb查询语句,右边是sql语句.对照着用,挺方便. db.users.find() select * from users db.users.find({"age" ...
- 8种Nosql数据库系统对比
导读:Kristóf Kovács 是一位软件架构师和咨询顾问,他最近发布了一片对比各种类型NoSQL数据库的文章. 虽然SQL数据库是非常有用的工具,但经历了15年的一支独秀之后垄断即将被打破.这只 ...
- 数据库 --> 8种NoSQL数据库对比
8 种 NoSQL 数据库对比 NoSQL是一项全新的数据库革命性运动,NoSQL的拥护者们提倡运用非关系型的数据存储.现今的计算机体系结构在数据存储方面要求具备庞大的水平扩展性,而NoSQL致力于改 ...
- [转]mongodb 查询条件:关系运算符"$lt", "$lte", "$gt", "$gte", "$ne" 逻辑运算符"$and“, "$or“, "$nor“
mongodb 查询条件 这节来说说mongodb条件操作符,"$lt", "$lte", "$gt", "$gte" ...
- Mongodb查询的用法,备注防止忘记
最近在用这个东西,为防止忘记,记下来. 集合简单查询方法 mongodb语法:db.collection.find() //collection就是集合的名称,这个可以自己进行创建. 对比sql语句 ...
- sql,nosql
1. 关系型数据库 关系型数据库,是指采用了关系模型来组织数据的数据库. 关系模型是在1970年由IBM的研究员E.F.Codd博士首先提出的,在之后的几十年中,关系模型的概念得到了充分的发展并逐渐成 ...
随机推荐
- 王垠代表作《完全用Linux工作》
完全用Linux工作-王垠 <完全用Linux工作>作者:王垠 完全用 GNU/Linux 工作 理解 GNU/Linux 更多精彩请直接访问SkySeraph个人站点:www.sky ...
- 洛谷——P2590 [ZJOI2008]树的统计(树链剖分模板练手)
P2590 [ZJOI2008]树的统计 I. CHANGE u t : 把结点u的权值改为t II. QMAX u v: 询问从点u到点v的路径上的节点的最大权值 III. QSUM u v: 询问 ...
- NOIP 前的垂死挣扎
计划每天十题吧,可能会一天水题一天难题吧.题目以杂题为主,没有专题可言. 10.11 计划: [x] P2939 [USACO09FEB] 改造路 Revamping Trails [ ] P3601 ...
- TestNG忽略测试
用@Test(enabled = false) 声明需要被忽略执行的测试方法 package com.janson; import org.testng.annotations.Test; publi ...
- 每日命令:(2)cd
Linux cd 命令可以说是Linux中最基本的命令语句,其他的命令语句要进行操作,都是建立在使用 cd 命令上的. 所以,学习Linux 常用命令,首先就要学好 cd 命令的使用方法技巧. 1. ...
- linux top-显示或管理执行中的程序
推荐:更多linux 性能监测与优化 关注:linux命令大全 top命令可以实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具.通过top命令所提供的互动式界面, ...
- MAC上postman离线安装时提示加载扩展程序出错怎么办?
目前的postman插件如果想正常使用,必须安装Postman Interceptor插件,这样才能直接使用chrome浏览器的cookie等信息,否则postman是无法完成老版本的功能的.post ...
- mysql数据库变更监控(canal)
背景: 1. 一些项目的基础功能会有Audit Trace, 以记录系统用户所做过的所有记录. 2. 实时备份数据,比如mysql主从复制,一个用于面向应用,一个用于对应用数据库的实时备份. 3. 实 ...
- 【Codeforces 682C】Alyona and the Tree
[链接] 我是链接,点我呀:) [题意] 题意 [题解] 设dis[v]表示v以上的点到达这个点的最大权值(肯定是它的祖先中的某个点到这个点) 类似于最大连续累加和 当往下走(x,y)这条边的时候,设 ...
- vue项目使用static目录存放图片解决方案
我个人喜欢把所有引用文件全部放在打包文件src的同级文件static文件内部,方便整合. 提醒:vue项目中正常情况下图片是由 url-loader 处理,加入了hash值,如果放到static里面w ...