MongoDB填写查询结果中不包含的数据

2024-03-07

假设我有一个包含以下数据的集合:

{"date" : ISODate("2018-01-01T00:00:00Z"), "count" : 3 }
{"date" : ISODate("2018-01-04T00:00:00Z"), "count" : 5 }

我应该使用什么 mongodb 函数才能生成一个查询,结果如下:

{"date" : ISODate("2018-01-01T00:00:00Z"), "count" : 3 }
{"date" : ISODate("2018-01-02T00:00:00Z"), "count" : 0 }
{"date" : ISODate("2018-01-03T00:00:00Z"), "count" : 0 }
{"date" : ISODate("2018-01-04T00:00:00Z"), "count" : 5 }
{"date" : ISODate("2018-01-05T00:00:00Z"), "count" : 0 }

基本上,我想迭代一个日期范围,如果给定的日期不在集合中,我将只为其输出一个 'count':0 。

我可能可以通过检索文档并使用 javascript 代码来填充结果中没有的数据来完成此操作,但我只是想知道是否可以仅使用 mongodb 查询来实现。

Thanks!


其可能通过$range生成一个范围并进行自我查找

steps

  1. $group- 动态查找最小和最大日期,如果需要则进行硬编码
  2. $project- 产生$range,基于最小值和最大值,如果需要则进行硬编码
  3. $unwind- 展开范围以记录
  4. $project- 通过生成的数字生成日期
  5. $lookup- 根据日期自加入集合
  6. $project- 如果找到匹配则返回计数,否则返回 0。更改$ifNull to $cond如果 mongo 版本低于 3.6

骨料管道

db.t.aggregate(
    [   
        {
            $group : { _id : null, startDate : { "$min" : "$date" }, endDate : { "$max" : "$date" }} 
        },
        {
            $project : { _id : 0 , startDate : 1,  genNo : { $range : [ { $add : [ {"$dayOfMonth" : "$startDate"}, -1 ] }, { $add : [ {"$dayOfMonth" : "$endDate"} , 1 ] } ] } }
        },
        {
            $unwind : "$genNo"
        },
        {
            $project : { genDate : { $add : [ "$startDate", { $multiply : [ "$genNo" , 86400000 ] } ] } }
        },
        {
            $lookup : {
                from : "t",
                localField : "genDate",
                foreignField : "date",
                as : "out"
            }
        },
        {
            $project : { date : "$genDate", count : { $ifNull : [ { $arrayElemAt : ["$out.count", 0 ] }, 0 ] } }
        }
    ]
)

收藏

> db.t.find()
{ "_id" : ObjectId("5a5d78d5423b9839ce07bd77"), "date" : ISODate("2018-01-01T00:00:00Z"), "count" : 3 }
{ "_id" : ObjectId("5a5d78d5423b9839ce07bd78"), "date" : ISODate("2018-01-04T00:00:00Z"), "count" : 5 }
> 

聚合结果

{ "date" : ISODate("2018-01-01T00:00:00Z"), "count" : 3 }
{ "date" : ISODate("2018-01-02T00:00:00Z"), "count" : 0 }
{ "date" : ISODate("2018-01-03T00:00:00Z"), "count" : 0 }
{ "date" : ISODate("2018-01-04T00:00:00Z"), "count" : 5 }
{ "date" : ISODate("2018-01-05T00:00:00Z"), "count" : 0 }
> 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MongoDB填写查询结果中不包含的数据 的相关文章

  • 如何在 Adob​​e Brackets 中使用 const 和 let 禁用 JSLint ES6 错误?

    我用 Google 搜索并浏览了这个网站 但我只能找到 JSHint 而不是 JSLint 的答案 为了摆脱 use function form of use strict 错误 我添加了 jslint node true 但要禁用使用错误
  • 使用 Google Apps 脚本处理数组中输入元素中的多个文件

    我有一个表单 允许从下拉列表中选择一个项目并上传文件 项目的名称和 ID 保存在电子表格文档中 适用于一个文件 但我想上传多个文件 你能帮我修改一下脚本吗 HTML 部分如下所示 div class col md 4 col sm 6 di
  • iOS Javascript DOM“冻结?”

    这里有几个问题 有没有办法阻止 iOS 在滚动时冻结页面上的 javascript 当您在另一个选项卡中或切换应用程序时 iOS 是否会冻结 JavaScript iOS 上还有其他主要的 javascript 限制吗 iOS 6 x 会暂
  • 引发一系列事件 Backbone event:name

    extend object Backbone Events object on myalert one function msg document body innerHTML eve1 msg msg name this name con
  • jQuery show() 和 hide() 的更流畅替代方案

    我有一个带有隐藏列的页面设置 使用 jQuery show 和 hide 函数将列滑入和滑出 然而 它有点 笨重 并且在显示 隐藏时看起来不太流畅 相比之下 我还有一个使用 jquery UI 手风琴的页面部分 当在这些部分之间切换时 过渡
  • 从 iframe 关闭父弹出窗口

    在domain1 com 上 我有一个链接 可以打开domain2 com 的弹出窗口 弹出窗口中有一个 iframe 也托管在 domain2 com 上 在 iframe 中 我试图关闭弹出窗口 我似乎对如何做到这一点感到困惑 在 if
  • 克隆元素对应表单中所有元素的事件

    我成功克隆了表行 其中包含从数据库检索的值 不过我对它没有什么问题 我对所有元素使用了类 因为克隆会重复 ID 不会出现问题 因为它无法唯一地定位每个元素 使每个元素 行在这里唯一的方法是什么 功能如何工作 当第一次选择框时 所选 ID 的
  • 代理递归函数

    想象一个简单的递归函数 我们试图包装它以检测输入和输出 A simple recursive function const count n gt n 1 count n 1 Wrap a function in a proxy to ins
  • CKEDITOR.styleSet.add - 'a' 元素的新样式

    由于某种原因如果我改变 p to a 它不再出现在样式列表中 有什么理由吗 CKEDITOR stylesSet add default name Wys wiersza 1 element p styles line height 18p
  • React 功能组件:作为函数调用与作为组件调用

    假设我有一个功能组件 const Foo props gt div props name div 直接作为函数调用有什么区别 const fooParent gt div Foo name foo div 与将其称为组件相比 const f
  • 我可以阻止history.popstate在初始页面加载时触发吗?

    我正在开发一个通过 AJAX 提供内容的网站 如果您单击菜单中的某个项目 内容 div 会更新为 get回应 没什么花哨的 我正在实施history pushState允许使用浏览器的后退 前进按钮进行导航 我有以下内容可以在历史导航上加载
  • 检查某个元素是否在没有 jQuery 的情况下“聚焦”

    我几乎确信我能在这里找到答案 但我没有成功 您如何检查事件调用时是否选择 聚焦 某个对象 我试过if document activeElement object HTMLBodyElement 但显然 activeElementonLoad
  • 什么是{| ... |} 在 JavaScript 中是什么意思? [复制]

    这个问题在这里已经有答案了 通读 javascript 代码库 我遇到了如下代码块 export type RouteReducerProps error Error isResolving boolean isResolved boole
  • 当用户输入/删除时,使文本字段中的提示消失/重新出现[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 有谁知道我怎样才能在我的搜索栏中做出
  • JavaScript 检查时区名称是否有效

    有没有一种方法可以在不使用外部库的情况下检查 JavaScript 中的时区名称是否有效 当用户在文本字段中输入时区名称时 我想验证时区是否有效 我知道我们可以使用时刻时区库轻松做到这一点 但我不想使用任何额外的库 我正在寻找纯 JavaS
  • javascript 函数后面括号中的值

    我正在尝试重新利用我在 SO 的答案中找到的一些 Javascript 代码 但我想首先更好地理解它的语法 其大纲是 function root ns factory some code window detectZoom function
  • Electron 应用程序中的 NEDB 持久化

    我正在尝试从电子应用程序连接到 nedb CRUD 操作效果很好 但我没有看到 db 文件 D my db 检查隐藏文件 文件存在于某个地方 因为即使在机器重新启动后它也会保留数据 我怀疑电子威胁着我的相对路径 但我可以在任何地方找到它 v
  • 如何使用jquery点击眼睛图标时显示和隐藏密码

    我需要在单击眼睛图标时显示和隐藏用户密码 因此我为此编写了脚本 当我单击眼睛图标时 只有类正在更改 但密码不可见 再次单击斜线眼睛图标 它应该隐藏这两个图标方法不起作用如何解决这个问题
  • 如何让 Grunt.js 和 Meteor.js 协同工作?

    我想在我的 Meteor 应用程序中使用简单的复制和串联 但是当 Meteor 在服务器和客户端上运行所有 javascript 文件时 我遇到了问题 而我不希望它们在任何地方运行 它要么只是配置文件 例如Gruntfile js或我想以某
  • 表单帖子上的 asp.net mvc 编码

    我在我的 asp net mvc 表单 带有文本区域的 nicedit 中使用富文本编辑器 当我在帖子上提交表单时 因为它不是 html 编码的 我收到以下消息 从客户端检测到潜在危险的 Request Form 值 如何对 post 上的

随机推荐

  • 哪些编程语言功能非常适合开发实时编码框架?

    我想建立一个 实时编码框架 我应该解释一下 实时编码框架 的含义 我将通过比较实时编码与传统编码来做到这一点 一般来说 在传统编程中 您编写代码 有时编译它 然后启动可执行文件或在某种解释器中打开脚本 如果您想修改您的申请 则必须重复此过程
  • 我如何告诉 Bazel Python.h 所在的位置?

    我正在构建一个 C 可执行文件 需要从用户的 Python 安装中 include Python h 为了在 Bazel 中表达 Python h 及其包含的各种头文件 我需要知道 Python 包含目录在哪里 这个位置在 Windows
  • 如何在Restlet 2.3.1中使用CORS?

    我正在尝试设置响应的 Access Control Allow Origin 标头 但是 标头不存在 我究竟做错了什么 public class JsonApplication extends Application private sta
  • 如何在Bootstrap中删除这个水平滚动条

    我的引导页面上有这个令人恼火的水平滚动 无法弄清楚是什么导致它出现这样的行为或该怎么办 JsFiddle链接 http jsfiddle net FatAlbert cd1syrd9 2 http jsfiddle net FatAlber
  • 在 Angular2/TypeScript 项目中使用 es6-shim

    我想将 es6 的 Map 用于 Angular2 typescript 项目 我想实现这一目标的方法是通过 es6 shim 库 但是我真的很困惑我应该如何做到这一点 这是我到目前为止所做的 在我的根index html文件中我有这个 上
  • FormData 对象未通过 jQuery AJAX 调用提交

    我使用此脚本从表单中获取所有值 以便为 ajax 请求做好准备 function saveDataAjax var fd new FormData var inputs document getElementsByTagName input
  • 在cocos2d中平滑拖动Sprite - iPhone

    我已经实现了对精灵对象的拖动 如下所示 BOOL ccTouchesMoved NSSet touches withEvent UIEvent event UITouch touch touches anyObject CGPoint lo
  • 在查询中参数化 WHERE 子句

    环境 C 视觉工作室2012 NET框架3 5 Hi 我可以在 SQL Server 中参数化 where 子句吗 在我的场景中 一旦输入 WHERE 子句字符串 应用程序会将其连接到查询的其他部分并在 SQL Server 中执行 然后返
  • 如何修复 antlr4 词法分析器规则中的“不允许多字符文字”错误?

    我想写的规则是 Character u0000 u10FFF 但是 当尝试针对定义它的词法分析器文件运行 antlr 工具时 出现以下错误 multi character literals are not allowed in lexer
  • 谷歌玩游戏实时多人游戏如何获得快速匹配玩家的名字?

    我正在尝试使用 google API 来制作我的实时多人游戏 我注意到每次玩家使用 随机匹配 选项互相玩游戏时 他们的 ID 都与他们实际的 google ID 不同 有没有办法在随机匹配中检索他们的实际 google ID 并且不使用这些
  • AppComponent中的错误无法用作入口组件

    嘿 我是使用 Angular 和 Web 开发的新手 我已经浏览了一些教程 当尝试合并使用我的 Firebase 数据库时 在本地编译 使用 ng 服务 时 我的应用程序失败 返回 AppComponent不能用作入口组件 如果您能提供任何
  • MVC 还是 MVP?哪种设计模式最有意义?

    小伙伴们更喜欢哪一个呢 我一直在研究两者 人们对它们的称呼似乎确实存在一些不一致之处 我会尝试记下差异 如果我错了 你可以纠正我 MVC 模型保存对其自己的观察者 视图 的引用 在模型更新时它会通知观察者 视图将所有事件和消息传递给控制器
  • 其核心是如何实现 boost 元组(没有 boost 标头中的所有额外细节)

    它似乎是一个包含 10 个内容的硬编码模板 但也有一个 cons 模板类的实现 与 Lokki 的 Typelist 非常相似 那么 boost 元组模板只是 Typelist cons 实现的包装器吗 或者说它的主旨是什么 在 C 03
  • MongoDB (Mongoose) `findByIdAndDelete` 不删除(使用 Postman 测试)

    我有我的猫鼬代码在一个单独的model js文件 而处理 http 请求的 Express 代码位于app js 我只是在为一个虚构的 wiki 文章网站练习创建 API 并在 Postman 上测试它们 我正在努力让它工作的 api 正在
  • 如何使用 Moq 测试 ServiceStack 服务

    我有一个使用 ServiceStack 创建的休息服务 使用 nHibernate 作为从 SqlCe 数据库获取数据的方式 我一直在尝试使用 nUnit 和 Moq 编写一些单元测试 我已成功模拟 nHibernate 实现以返回 nul
  • 如何在 Android 应用程序中将 SD 卡图像添加到电子邮件正文中

    我想将图像添加到电子邮件正文中 我不在邮件中使用附件 String imagepath Imagepath Environment getExternalStorageDirectory File separator ImagesCmas
  • 在 XML-RPC 或 SOAP 中实现回调

    我试图了解如何使用 SOAP 或 XML RPC 为我的产品创建远程 开放的 API 问题是 我的 API 的一部分将要求我能够将事件从服务器推送到客户端 我将需要能够 发送回调 而不仅仅是 调用函数 作为我的 API 的一部分 在 SOA
  • Haskell 中是否有自动记忆全局多态值的方法?

    多态 常量 例如5 Num a gt a 并不是真正的常量 而是字典参数的函数 因此 如果您定义 primes Num n gt n primes Bad example of course there s no good reason h
  • 使用 tomcat 读取 spring boot 上的控制台输入

    是否可以在 Spring Boot 上的嵌入式 tomcat 启动之前读取控制台输入 假定的应用程序流程是 向用户请求用户名和密码 这将用于启动应用程序 它在使用时有效java jar命令 问题是当我关闭控制台 Linux 上的 SSH 时
  • MongoDB填写查询结果中不包含的数据

    假设我有一个包含以下数据的集合 date ISODate 2018 01 01T00 00 00Z count 3 date ISODate 2018 01 04T00 00 00Z count 5 我应该使用什么 mongodb 函数才能