一.准备阶段

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#对比)的更多相关文章

  1. Entity Frameword 查询 sql func linq 对比

    Entity Framework是个好东西,虽然没有Hibernate功能强大,但使用更简便.今天整理一下常见SQL如何用EF来表达,Func形式和Linq形式都会列出来(本人更多在用Func形式,l ...

  2. mongodb查询语句与sql语句对比

    左边是mongodb查询语句,右边是sql语句.对照着用,挺方便. db.users.find() select * from users db.users.find({"age" ...

  3. mongodb 跟踪SQL语句及慢查询收集

    有个需求:跟踪mongodb的SQL语句及慢查询收集 第一步:通过mongodb自带函数可以查看在一段时间内DML语句的运行次数. 在bin目录下面运行  ./mongostat -port 端口号  ...

  4. mongodb与sql语句对比

    左边是mongodb查询语句,右边是sql语句.对照着用,挺方便. db.users.find() select * from users db.users.find({"age" ...

  5. 8种Nosql数据库系统对比

    导读:Kristóf Kovács 是一位软件架构师和咨询顾问,他最近发布了一片对比各种类型NoSQL数据库的文章. 虽然SQL数据库是非常有用的工具,但经历了15年的一支独秀之后垄断即将被打破.这只 ...

  6. 数据库 --> 8种NoSQL数据库对比

    8 种 NoSQL 数据库对比 NoSQL是一项全新的数据库革命性运动,NoSQL的拥护者们提倡运用非关系型的数据存储.现今的计算机体系结构在数据存储方面要求具备庞大的水平扩展性,而NoSQL致力于改 ...

  7. [转]mongodb 查询条件:关系运算符"$lt", "$lte", "$gt", "$gte", "$ne" 逻辑运算符"$and“, "$or“, "$nor“

    mongodb 查询条件   这节来说说mongodb条件操作符,"$lt", "$lte", "$gt", "$gte" ...

  8. Mongodb查询的用法,备注防止忘记

    最近在用这个东西,为防止忘记,记下来. 集合简单查询方法 mongodb语法:db.collection.find()  //collection就是集合的名称,这个可以自己进行创建. 对比sql语句 ...

  9. sql,nosql

    1. 关系型数据库 关系型数据库,是指采用了关系模型来组织数据的数据库. 关系模型是在1970年由IBM的研究员E.F.Codd博士首先提出的,在之后的几十年中,关系模型的概念得到了充分的发展并逐渐成 ...

随机推荐

  1. 攻破javascript面试的完美指南【译】

    攻破javascript面试的完美指南(开发者视角) 0. 前言 本文适合有一定js基础的前端开发人员阅读.原文是我google时无意发现的, 被一些知识点清晰的解析所打动, 决定翻译并记录下来.这个 ...

  2. UVA - 1615 Highway(贪心-区间选点问题)

    题目: 给定平面上n(n≤105)个点和一个值D,要求在x轴上选出尽量少的点,使得对于给定的每个点,都有一个选出的点离它的欧几里得距离不超过D. 思路: 先自己造区间,然后贪心选点就可以了.之前做过一 ...

  3. World Cup(The 2016 ACM-ICPC Asia China-Final Contest dfs搜索)

    题目: Here is World Cup again, the top 32 teams come together to fight for the World Champion. The tea ...

  4. Re0:DP学习之路 母牛的故事 HDU - 2018

    解法 一定要注意斐波那契数列的原始意义,斐波那契数列也叫作兔子数列是兔子繁衍的一种表示方法.同样适用于别的情况的动物繁衍问题 原始的是3个月一胎现在四个月那么方程就是 f(n)=n n<=4 f ...

  5. 腾讯云:搭建 Node.js 环境

    搭建 Node.js 环境 安装 Node.js 环境 任务时间:5min ~ 10min Node.js 是运行在服务端的 JavaScript, 是基于 Chrome JavaScript V8 ...

  6. i2c中start和restart的区别

    有的硬件芯片提供了一个个寄存器,供我们很好的操作i2c,但是,在用的时候,我们是不知道他到地是怎么操作的,下边,我就探讨下i2c中的start和restart的区别. start是在scl是高电平的时 ...

  7. 使用nfs3将hdfs挂载到本地或远程目录(非kerberos适用)

    最基本的配置方法,aix.kerberos等的操作详见http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/Hdf ...

  8. 【Codeforces 364A】Matrix

    [链接] 我是链接,点我呀:) [题意] 让你求出b[i][j]=s[i]*s[j]规则构成的矩阵 的所有子矩阵中子矩阵的和为a的子矩阵的个数 [题解] (x,y,z,t) 会发现它的和就是sum(x ...

  9. Linux下汇编语言学习笔记80 ---

    这是17年暑假学习Linux汇编语言的笔记记录,参考书目为清华大学出版社 Jeff Duntemann著 梁晓辉译<汇编语言基于Linux环境>的书,喜欢看原版书的同学可以看<Ass ...

  10. centos6.2安装kvm虚拟机

    http://www.wenzizone.com/2012/03/06/centos_6-2_install_kvm.html KVM虚拟机简介 kernel-based Virtual Machin ...