问题标签 [aggregation-framework]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mongodb - Mongo聚合框架,排序然后分组不起作用
我正在尝试先按日期对数据进行排序,然后在另一个字段上分组。这对我不起作用。
我要回答的问题是:选择最近的不同 cid?
鉴于此数据:
我首先在圆圈上进行匹配,然后在日期上进行排序,然后在 cid 上进行分组
我得到的结果:
以下是我的分析:
在按日期匹配或排序之前,数据为:
按日期排序后,数据集将是:
所以分组后,我期望的结果是:
什么查询可以解决我的问题?
为什么当前查询对我不起作用?
php - Mongodb按列聚合/分组并计算特定列
我们已经设置了一个将事件写入 mongo 实例的基本应用程序。这是一个示例写入:
我们想做的是检索按 URL 分组的结果和某些 event_id 的计数。像 event_grouping_a 可能由 event_ids 1,6,35 组成,而 event_grouping_b 可能由 2,66,103 组成。示例输出如下所示:
关于如何执行这种类型的聚合/分组的任何想法?最终目标是在 PHP 中使用它,但我在 mongod 控制台中搞砸了,但无济于事。我可以让它按 URL 分组,但我不能让它在单个父 URL 下显示两种事件类型。它吐出这样的东西:
以上两个应该合并为1,但我一生都无法弄清楚......有什么建议吗?
php - MongoDB 聚合在 PHP 中不起作用(或非常慢)并且在 shell 中完美运行?
我正在尝试对我的集合(包含超过 20M 个文档)使用聚合方法。
我首先在 Windows shell 中尝试过:
它运行良好,几秒钟后返回结果。
当我在 PHP 中“翻译”它时:
我收到超时 PHP 致命错误:
我不知道我的 PHP 代码是否出错,或者 PHP 中的聚合应该比 shell 慢得多?
另外,我在“名字”字段上添加了一个索引,以使查询更快。
顺便说一句,有没有办法将这种调用的超时设置为无穷大?
非常感谢你的帮助 !
乔
mongodb - Mongodb聚合计数数组/集合大小
这是我的问题:
模型:
{应用程序:“abc”,日期:Time.now,状态:“1” user_id:[id1,id2,id4]}
{应用程序:“abc”,日期:Time.yesterday,状态:“1”,user_id:[id1,id3,id5]}
{应用程序:“abc”,日期:Time.yesterday-1,状态:“1”,user_id:[id1,id3,id5]}
我需要计算一段时间内的唯一用户ID数。
预期结果:
{ 应用程序:“abc”,状态:“1”,unique_id_count:5 }
我目前正在使用聚合框架并计算 mongodb 之外的 id。
{ $match: { application: "abc" } }, { $unwind: "$users" }, { $group: { _id: { status: "$status"}, users: { $addToSet: "$users" } } }
我的用户 ID 数组非常大,所以我必须迭代日期,否则我将获得最大文档限制 (16mb)。
我也可以 $group by
{ 年: { $year: "$date" }, 月: { $month: "$date" }, 日: { $dayOfMonth: "$date" }
但我也得到了文档大小限制。
是否可以计算 mongodb 中的设置大小?
谢谢
php - MongoDB 在 PHP 中聚合,将秒数添加到日期/时间
我有一个MongoDB
聚合PHP
定义为:
问题是$add
聚合函数$project
不起作用。
在日期/时间字段中添加任意秒数的正确方法是什么$executed
?
谢谢。
mongodb - MongoDB聚合框架按数组长度排序
给定以下数据集:
如何将此 python/pymongo 排序转换为可与 MongoDB 聚合框架一起使用的东西?我正在根据codes
数组中的代码数量对结果进行排序。
这在python 中有效,我只想知道如何在 MongoDB 查询端实现相同的目标。
mongodb - MongoDB 2.2 中的 MongoDB 聚合框架中的 $group 是多线程的吗?
我想知道 MongoDB 2.2 聚合框架中的 $group 函数是否是多线程的。
对于这个问题,我做了一些小测试。我使用的数据集用于存储大约 400 万封电子邮件,每封电子邮件的格式如下:
我设计了一个查询来查找一天、一周、一个月、半年和一年内的所有电子邮件。然后按“bot”字段对结果进行分组。
我使用聚合框架和 java 驱动来做到这一点。Java代码如下:
结果如下所示:
令我惊讶的是,通常一年以上的组应该比一天慢,因为它包含更多记录。(数据集中的记录随时间均匀分布)
如果我只使用 db.spams.find({"date":{$gt:ISODate(xxx), {$lt: xxx}}}).count,我可以看到查询一年比查询一天花费更长的时间。
但是为什么当我使用 $group 时,当我扩大时间范围时,这个函数需要几乎相同的时间?
我知道聚合框架是用 C++ 编写的,我使用的是 mongodb 2.2,聚合框架是否使用了多线程或其他一些方法来提高性能?
mongodb - MongoDB聚合结果缓存
我在 mongodb 中有一个相当大的集合,大约有 100 000 个文档(未分片)。这是一个 Web 应用程序的后端,基本上只允许用户浏览不同的方式来查看此集合中的相同信息。
对于其中一个视图,我尝试使用聚合框架计算字段的出现次数。这意味着聚合整个集合。问题是这种聚合操作(这是一个简单的分组、排序和限制管道)需要 2 秒,这对于 Web 应用程序来说太慢了。
所以我的问题是;为了缓存此聚合操作的结果,首选解决方案是什么?据我发现,不可能“聚合成”一个新的集合,或者类似的东西。目前我发现的唯一解决方案是将整个结果读入一个变量,然后使用 insert 将此变量插入一个新集合中 - 但我担心这涉及从数据库发送大量数据 => 到我的应用程序 =>回到数据库?
有什么建议么?
管道示例:
架构基本上是这 3 个字段 + 一些真正不相关的字段,即:
我在 item_id 和所有 3 个字段上都尝试了索引,但没有成功。
mongodb - Mongo 在多个字段上选择不同的 + 通用架构
我目前正在学习 MongoDB,但遇到了一些问题。
对于一个项目,我使用的是 SQL,我有 3 个表:Artist、Album、Song。
然后我决定换成 Mongo,因为我有很多行,也因为我很好奇......
在 Mongo 中,我只有一首合集 Song,其中包含所有内容:
- 曲目名称
- 艺术家姓名
- 艺术品
- 文件夹
- 专辑名
- 专辑日期
首先我想知道这个结构是否正确,或者我是否应该为我在 SQL 中拥有的每个表创建集合?我的主要目标是能够搜索 artistName="something" 和 trackName="something_else"... 通过简单的查找,它的工作速度非常快!:)
但是,我还需要一个页面来显示所有艺术家及其链接(文件夹),这是我的问题:我想显示所有艺术家,按艺术家姓名排序,以 A 开头(例如)并获取每个艺术家的文件夹。 ..
我试过这个:
这工作正常,但我需要folder
..
然后我尝试了这个:
没有排序但排序我有以下错误:
所以我的问题是做我需要的最好的方法是什么?
非常感谢,瓦伦丁