问题标签 [mongodb-aggregation]

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.

0 投票
2 回答
170 浏览

mongodb - Elasticsearch 和后续的 Mongodb 查询

我正在使用 Elasticsearch 实现搜索功能。

我收到 Elasticsearch 返回的“用户名”集,之后我需要在 MongoDB 中查询一个集合以获取“用户名”集中每个用户的最新评论。

问题:假设我每次查询 Elasticsearch 时都会收到大约 100 个用户名,什么是查询 MongoDB 以获取每个用户的最新评论的最快方法。使用 .findOne() 在 for 循环中查询 MongoDB 100 次是唯一的选择吗?

(注意 - 因为用户的最新评论经常更改,我不想将其存储在 Elasticsearch 中,因为这会过于频繁地触发整个文档的检索-更改-重新索引过程)

0 投票
1 回答
73 浏览

mongodb - 带有聚合的 MongoDB 数据分组

我有这样的数据收集:

我想提取如下输出(具有不同的“SYS”值)

这是我的代码,我卡在中间,请帮我排序

0 投票
1 回答
620 浏览

mongodb - MongoDB聚合管道:使用字段计数文档小于值?

我有一个使用 MongoDB 的聚合框架的现有报告,我想向它添加一个新字段 - 其中一个数字字段小于给定值的所有文档的计数。

我的文档有一个长度字段,我已经在计算它的平均值,所以除此之外,我还想要它低于某个数字的文档数量。

我当前的聚合管道非常简单:

我试过使用$sumand $lt,但计数始终为 0。我猜这是因为$sum只计算1返回的时间,但$lt返回true。这是我尝试过的:

有谁知道我怎么能做到这一点?谢谢!

0 投票
1 回答
65 浏览

mongodb - 在 mongoDB 中按日期查询文档的最新版本

我正在尝试找到一个 mongoDB 脚本,它将查看一个集合,其中有同一个文档的多个记录,并且只为我提供每个文档的最新版本作为结果集。

我无法用英语比上面更好地解释它,但也许下面的这个小 SQL 可能会进一步解释它。我想要每个文档,transaction_reference但只有最新的日期版本(object_creation_date)。

同一个文档有多个版本的原因是因为我想存储一个事务的每次迭代。我第一次收到文件时,它可能是transaction_statusUNPAID,然后我再次收到相同的交易,这次transaction_status是 PAID。

一些分析将对所有唯一交易求和,而另一些分析可能是测量状态为 UNPAID 的文档与下一个 PAID 文档之间的时间距离。

根据要求,这里有两个文件:

现在支付的第二个版本

感谢您的支持,马特

0 投票
1 回答
823 浏览

mongodb - $group 使用 $month 不处理字符串化日期

我正在使用 mLab,它似乎不想让我使用ISODate("2016-06-16T00:00:00.201Z"),所以我最终不得不将 mLab 中的所有日期作为字符串 line "transaction_date": "2016-06-16T00:00:00.201Z"

对我的数据范围而言,字符串化日期似乎可以正常工作:

但是,它不喜欢使用我尝试做最后一组的日期来按月数汇总我的结果。

知道为什么我会收到“未知组运营商 $month”消息吗?谢谢

下面是完整的脚本:

0 投票
3 回答
4463 浏览

mongodb - 聚合管道错误:getMore:服务器上不存在游标,可能重新启动或超时

我正面临着 mongodb 的这个问题。我的代码是这样的

我通过命令和 mongo shell 运行上述查询

过了一会儿,我在 cursorQuery.hasNext() 行的服务器错误上发现光标不存在。

在查找查询中如果我收到此错误,我可以通过添加来解决addOption(DBQuery.Option.noTimeout) 但是此选项似乎不适用于聚合

请让我知道如何解决或解决此问题。

只是为了提供额外的更新:当说我使用

我收到此错误 E QUERY TypeError: Object # has no method 'addOption'

但是,当我说我使用

它工作正常。

检查聚合文档 https://docs.mongodb.com/v3.0/reference/method/db.collection.aggregate/ 它说:返回:聚合管道操作最后阶段生成的文档的光标

然后检查光标文档 https://docs.mongodb.com/v3.0/reference/method/cursor.addOption/#cursor.addOption

没有建议聚合游标与查找游标不同,前者不支持 DBQuery.Option.noTimeout。

那么在 mongodb 中是否存在一个错误。任何修复它或有解决方法的方法。

注意mongodb版本是3.0

0 投票
2 回答
1714 浏览

string - 在整个集合中的字符串字段中查找最常用的单词

假设我有一个类似于以下内容的 Mongo 集合:

是否可以确定在该字段中最常出现的单词foo(最好是计数)?

例如,我喜欢这样的结果集:

0 投票
1 回答
141 浏览

mongodb - Mongodb 聚合可以根据日期从子文档数组中投影单个子文档吗?

假设一个人的集合,每个人都有一个位置子文档的集合,其中一些包括“未来”位置:

是否可以编写一个 mongodb 聚合来返回每个人截至今天的位置:

0 投票
1 回答
1085 浏览

mongodb - 将 MongoDB 聚合结果重塑为字段值文档

我有一个数据集合,其中包含以下形状的数据:

在这个数据上,我执行了一个 MongoDB 聚合管道:

这给出了我的结果格式:

我想在聚合中将其转换为我的结果:

有没有办法通过聚合来实现这一点?我想将此添加为管道的最后阶段。我尝试添加一个 $project 阶段但没有成功。

0 投票
1 回答
1544 浏览

mongodb - MongoDb 在聚合 $project 中排除 null

我在 MongoDb 中有一个数据集合,其形状为:

我想提取“评论”字段,但只反映结果中不为空的字段。

我可以通过查询一个接一个地提取字段(Sq1comment;Sq2comment,Sq3comment)

其输出为:

或者如果我做一个聚合 $project 'comment' 字段,所有的空值都在那里:

其输出为:

我想要一个项目的数据来显示所有评论字段,但只有不为空的条目。因此排除空字段是聚合。