当前位置: 首页 > news >正文

b站是什么平台/营销网

b站是什么平台,营销网,什么是公司注册资金,如何在建设银行网站申购纪念币Mongodb的查询语法是很多的,是NOSQL队伍中比较丰富的一个。当然有很多查询跟关系型查询无法相比。例如联表查询,Mongodb并不擅长联表查询,虽然出一个$lookup支持两个集合之间关联,不过跟关系相比之就逊色多了。Mongodb的查询种类很…

Mongodb的查询语法是很多的,是NOSQL队伍中比较丰富的一个。当然有很多查询跟关系型查询无法相比。例如联表查询,Mongodb并不擅长联表查询,虽然出一个$lookup支持两个集合之间关联,不过跟关系相比之就逊色多了。
Mongodb的查询种类很丰富,这里就不一一讲解,挑一些常用的写出来,作一个笔记。

一 聚合查询mongodb对数据统计,筛选引用aggregate()进行聚合查询。功能相当强大。
常用几个操作符
$project:修改文档的结构(重命名、增加或删除域),也可以用于创建计算结果以及嵌套文档。
$unwind:将文档中的某一个数组类型字段拆分成多条,每条包含数组中的一个值。$match:过滤数据,只输出符合条件的文档。
$limit:限制MongoDB聚合管道返回的文档数。
$skip:在聚合管道中跳过指定数量的文档。
$group:将集合中的文档分组,可用于统计结果。
$sort:文档排序输出。
$sum 计算总和

以上这几个操作符,是最常用的,mongodb中必须要掌握的操作符。下面一个,一个用net core示例讲解,将依然使用这个 系列第一篇数据结构,有不了解的同学可以去看一看第一篇。
我们先尝试添加一些模拟数据,以方便程序测试。

class Program
{static void Main(string[] args){MongoClient client = new MongoClient("mongodb://192.168.99.5");IMongoDatabase dbBase = client.GetDatabase("School");IMongoCollection<Class> collection = dbBase.GetCollection<Class>("Class");//生成随机数使用Random random = new Random();var nameItems1 = "赵、钱、孙、李、周、吴、郑、王、冯、陈、楮、卫、蒋、沈、韩、杨、朱、秦、尤、许、何".Split("、").ToList();var nameItems2 = "盼丽、艳红、甜甜、璨、彬彬、银红、晨曦、婷、广荣、蓓、小艳、欣如、辅仁、嘉、雯婷".Split("、").ToList();for (var i = 1; i < 7; i++){collection.InsertOne(new Class{ClassName = $"{i}年级",StudentItems = ((Func<List<Student>>)(() =>{var studentItems = new List<Student>();var studentCount = random.Next(5, 15);for (var t = 0; t < studentCount; t++){studentItems.Add(new Student{Age = random.Next(6, 12),Name = nameItems1[random.Next(0, nameItems1.Count)] + nameItems2[random.Next(0, nameItems2.Count)],Sex = random.Next(1, 3) == 1 ? "男" : "女"});}return studentItems;}))()});}}
}public class Class
{public BsonObjectId Id { set; get; }public string ClassName { set; get; }public List<Student> StudentItems { set; get; }
}public class Student
{public string Name { set; get; }public int Age { set; get; }public string Sex { set; get; }
}

0547ca0106a06ac4d5a691a0b9319e04.png
collection.Aggregate<>
//是一个泛型方法,返回类型可以是BsonDocument或实体,自动序列化。
//例如
collection.Aggregate<BsonDocument>()
collection.Aggregate<实体类>()
//值得一提的是Aggregate()接受的参数是PipelineDefinition,而PipelineDefinition类中使用implicit 类型转换运算符。所以直接输入参数即可

$project 操作符

var items = collection.Aggregate<BsonDocument>(new[] {new BsonDocument { { "$project", new BsonDocument("StudentItems", 1) } }
}).ToList();

结果:你会发现StudentItems 被单独提取出来

2003a80f756f67538811ad8c186566f6.png

$unwind 操作符

var items = collection.Aggregate<BsonDocument>(new[] {new BsonDocument ("$unwind","$StudentItems")
}).ToList();

结果:你会发现StudentItems 的每一项都抽出来与原来的文档组成一个新的文档

5934dd25dc147309676938d89615bd34.png

一般情况,$project和$unwind组合使用。比如提取出StudentItems 每一项组成一个文档。例如

var items = collection.Aggregate<BsonDocument>(new[] {new BsonDocument { { "$project", new BsonDocument("StudentItems", 1) } },new BsonDocument ("$unwind","$StudentItems")
}).ToList();

68ab3d44d93ed479a3e3695c3aaeac42.png

60a11ba6f033d0a5bf05b9ff349b9e80.png

$match 操作符

var items = collection.Aggregate<BsonDocument>(new[] {new BsonDocument { { "$match", new BsonDocument("ClassName", "1年级") } }
}).ToList();

20983b51a743c4926804f20770a868ce.png

$limit 操作符
$skip 操作符

var items = collection.Aggregate<BsonDocument>(new[] {new BsonDocument("$skip",2),new BsonDocument("$limit",3)
}).ToList();

结果:跳过前两条之后,选择前三条。例如:组合于分页的应用

c06cc1f08b40769b963d016f0a82f114.png

$group 操作符
$sum 操作符

var items = collection.Aggregate<BsonDocument>(new[] {new BsonDocument {{ "$group", new BsonDocument {{ "_id", new BsonDocument("ClassName","$ClassName")},{ "count", new BsonDocument ("$sum",1) }}}}
}).ToList();

结果:按年级分组,并且统计每组总行数

05c9a79d67d61741351b523366ff5ae1.png

$sort 操作符

var items = collection.Aggregate<BsonDocument>(new[] {new BsonDocument {{ "$sort", new BsonDocument ("ClassName",-1)}}
}).ToList();

注意:操作符顺序很重要,先后顺序不同,会导致结果不一样。
mongodb聚合查询,笔记到这里。

http://www.jmfq.cn/news/4936483.html

相关文章:

  • 一个软件app/seo关键词推广公司
  • 天津建设网站哪家好/关键词排名批量查询软件
  • 昆明网站推广排名/重庆seo网页优化
  • 锦兴建筑人才招聘平台/深圳百度首页优化
  • 六安网约车/网站优化招聘
  • seo网站文章编辑软件/培训学校机构
  • 网站开发主流程序/百度网址浏览大全
  • 上海正规网站建设怎么样/外包seo服务口碑好
  • html5和css3网站/网络营销手段有哪四种
  • 网站建设部门/品牌运营岗位职责
  • 网站收录突然减少/我是新手如何做电商
  • 玉环在哪里做网站/最近一周的新闻
  • 快速做网站企业/系统优化大师
  • 怎样做网站建设方案/淘宝怎样优化关键词
  • 网页设计的基本结构/优化网站排名软件
  • 如何查看网站的空间/企业整站seo
  • ui培训班学费多少/绍兴seo公司
  • 境外网址app/seo排名优化软件价格
  • 做网站设计需求/小程序设计
  • 大丰企业做网站多少钱/免费推广方法
  • 163免费邮箱入口/广州seo关键词优化费用
  • 推广网站哪家做的好/今天最新的新闻
  • 优质网站建设方案/年轻人不要做网络销售
  • 建筑云平台/合肥关键词排名优化
  • 创意网站页面/b2b网站大全免费
  • 云南网站制作怎么计费/武汉seo管理
  • 济南信息化网站/漳州seo网站快速排名
  • 南阳锐诚网站建设/软文营销文章范文
  • 魔方建站/口碑营销的案例及分析
  • 自己做网站用什么数据库/汕头seo网站推广