聚合函数

- 添加基础数据:
db.local.save({contry:'中国',name:'小明',score:77});
db.local.save({contry:'中国',name:'小红',score:88});
db.local.save({contry:'中国',name:'小张',score:99});
db.local.save({contry:'美国',name:'jack',score:45});
db.local.save({contry:'美国',name:'rose',score:67});
db.local.save({contry:'美国',name:'mick',score:89});

- 需要求当前集合的记录数:
- `db.local.find().count();`


- 求最大值
-求整个集合的总成绩
+ db.集合名.聚合({ 组的划分规则{_id:'1',显示内容:{$sum:'$score'}} })
- 求所有人的平均分
- `db.local.aggregate({$group:{_id:'$contry',sumscore:{$avg:'$score' } }});`

- 求按国家分组,求所有国家的总分
- `db.users.aggregate({$group:{_id:'$contry',sumScore:{$sum:'$score'}}});`

联合查询

db.orders.insert([
{ "_id" : 1, "item" : "almonds", "price" : 12, "quantity" : 2 },
{ "_id" : 2, "item" : "pecans", "price" : 20, "quantity" : 1 },
{ "_id" : 3 }
]);
db.inventory.insert([
{ "_id" : 1, "sku" : "almonds", description: "product 1", "instock" : 120 },
{ "_id" : 2, "sku" : "bread", description: "product 2", "instock" : 80 },
{ "_id" : 3, "sku" : "cashews", description: "product 3", "instock" : 60 },
{ "_id" : 4, "sku" : "pecans", description: "product 4", "instock" : 70 },
{ "_id" : 5, "sku": null, description: "Incomplete" },
{ "_id" : 6 }
]);
db.orders.aggregate([
{
$lookup:
{
from: "inventory",
localField: "item",
foreignField: "sku",
as: "inventory_docs"
}
}
]);
```

效果:

> show  dbs;
admin .000GB
config .000GB
local .000GB
mini_db .001GB
> db.mini_db.insert([
... { "_id" : , "item" : "almonds", "price" : , "quantity" : },
... { "_id" : , "item" : "pecans", "price" : , "quantity" : },
... { "_id" : }
... ]);
BulkWriteResult({
"writeErrors" : [ ],
"writeConcernErrors" : [ ],
"nInserted" : ,
"nUpserted" : ,
"nMatched" : ,
"nModified" : ,
"nRemoved" : ,
"upserted" : [ ]
})
> db.config.insert([
... { "_id" : , "sku" : "almonds", description: "product 1", "instock" : },
... { "_id" : , "sku" : "bread", description: "product 2", "instock" : },
... { "_id" : , "sku" : "cashews", description: "product 3", "instock" : },
... { "_id" : , "sku" : "pecans", description: "product 4", "instock" : },
... { "_id" : , "sku": null, description: "Incomplete" },
... { "_id" : }
... ]);
BulkWriteResult({
"writeErrors" : [ ],
"writeConcernErrors" : [ ],
"nInserted" : ,
"nUpserted" : ,
"nMatched" : ,
"nModified" : ,
"nRemoved" : ,
"upserted" : [ ]
})
> db.mini_db.aggregate([
... {
... $lookup:
... {
... from: "config",
... localField: "item",
... foreignField: "sku",
... as: "config_docs"
... }
... }
... ]);
{ "_id" : , "item" : "almonds", "price" : , "quantity" : , "config_docs" : [ { "_id" : , "sku" : "almonds", "description" : "product 1", "instock" : } ] }
{ "_id" : , "item" : "pecans", "price" : , "quantity" : , "config_docs" : [ { "_id" : , "sku" : "pecans", "description" : "product 4", "instock" : } ] }
{ "_id" : , "config_docs" : [ { "_id" : , "sku" : null, "description" : "Incomplete" }, { "_id" : } ] }
>

mongodb的学习 (3)的更多相关文章

  1. NoSQL之【MongoDB】学习(三):配置文件说明

    摘要: 继上一篇NoSQL之[MongoDB]学习(一):安装说明 之后,知道了如何安装和启动MongoDB,现在对启动时指定的配置文件(mongodb.conf)进行说明,详情请见官方. 启动Mon ...

  2. [转载]MongoDB开发学习(2)索引的基本操作

    索引能够极大的提高查询的效率.在数据库中简历索引必不可少. 在MongoDB中可以很轻松的创建索引. 默认索引_id_ 开启MongoDB服务器,创建数据库cnblogs,创建集合Users .(关于 ...

  3. 双刃剑MongoDB的学习和避坑

    双刃剑MongoDB的学习和避坑 MongoDB 是一把双刃剑,它对数据结构的要求并不高.数据通过key-value的形式存储,而value的值可以是字符串,也可以是文档.所以我们在使用的过程中非常方 ...

  4. MongoDB的学习--索引类型和属性(转)

    原文链接:MongoDB的学习--索引类型和属性 索引类型 MongDB的索引分为以下几种类型:单键索引.复合索引.多键索引.地理空间索引.全文本索引和哈希索引 单键索引(Single Field I ...

  5. mongodb数据库学习【安装及简单增删改查】

    //@desn:mongodb数据库学习 //@desn:码字不宜,转载请注明出处 //@author:张慧源  <turing_zhy@163.com> //@date:2018/08/ ...

  6. Mongodb数据库学习系列————(一)Mongodb数据库主从复制的搭建

    Mongodb数据库主从复制的搭建 Writeby:lipeng                                    date:2014-10-22 最近项目上用到了位置查询,在网上 ...

  7. mongodb入门学习小记

    Mongodb 简单入门(个人学习小记) 1.安装并注册成服务:(示例) E:\DevTools\mongodb3.2.6\bin>mongod.exe --bind_ip 127.0.0.1 ...

  8. MongoDB快速学习笔记

    一,下载. XP系统,32位的下载地址: https://www.mongodb.org/dl/win32/i386 例:win32/mongodb-win32-i386-2.0.7.ziphttp: ...

  9. MongoDB的学习--文档的查询

    继续关于<MongoDB权威指南>记录,今天的内容是文档的查询~~ MongoDB官网地址:http://www.mongodb.org/ 我使用的是MongoDB 2.4.8 find函 ...

  10. MongoDB入门学习(一)—— 安装和启动

    最近由于工作需要,开始学习MongoDB数据库了.第一篇博文就从这里开始吧,以此记录下学习中的点点滴滴,为自己加油呢! (一) MongoDB简介 网上搜搜了一下:(来源:http://www.run ...

随机推荐

  1. 查看linux 用户登录信息及ip

    查看可疑IP登陆 last -f  /var/log/wtmp cat  /var/log/secure  寻找可疑ip登陆次数及信息 who  查看当前登陆用户 -h  忽略头文件信息 -u 显示结 ...

  2. 2019 ICPC Universidad Nacional de Colombia Programming Contest C D J

    C. Common Subsequence 题意:给出长度为n两个串,求两个串的最长公共子序列len,如果len>=0.99*n,两个串就是亲兄弟否则不是. 解法:朴素的求LCS的时间复杂度是O ...

  3. 前端学习(二十六)移动端s(笔记)

    ===================================================弹性布局rem布局---------------------------------------- ...

  4. 力扣—one plus(加一) python实现

    题目描述: 中文: 给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一. 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字. 你可以假设除了整数 0 之外,这个整数不会以零开头 ...

  5. css实现下拉框导航条

    html <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <ti ...

  6. 深入java虚拟机学习笔记(一)

        学习java学到最后都要很熟悉jvm,懂得了java的运行机制,查找问题就会很快了,一般我们都是会用,还到不了精通的地步,虽说我也是个多年的java工程师,但也没有很好的掌握jvm,最近换了一 ...

  7. Python基础教程(009)--Python程序的格式以及扩展名

    前言: 熟悉编写第一个Python程序 内容 1,Python源程序是一个特殊的文本文件.可以使用任意文本编辑软件做Python开发 2,Python程序的文件扩展名都是.py 熟悉了解: 看到.py ...

  8. 探索Redis设计与实现9:数据库redisDb与键过期删除策略

    本文转自互联网 本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial ...

  9. 6、基于highcharts实现的线性拟合,计算部分在java中实现,画的是正态概率图

    1.坐标点类 package cn.test.domain; public class Point { double x; double y; public Point(){ } public Poi ...

  10. jupyter notebook的魔法命令 % %%

    Magic单元分为两种,一种是line magics,另外一种cell magics. Line magic是通过在前面加%,表示magic只在本行有效. Cell magic是通过在前面加%%,表示 ...