问题标签 [mongodb-lookup]

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 投票
0 回答
113 浏览

mongodb - 大型数据集上的 mongoDB 聚合已经运行了几个小时,而且看不到尽头。普通的?或者我可以加快速度吗?

我收集了 6-7 百万条事件记录。我有另一个约 100,000 个每小时天气记录的集合,与事件记录跨越相同的时间范围。我正在使用带有 $lookup 的 $aggregate 管道来合并事件集合中每个事件的相关天气数据。

问题:我已经在完整的 EVENT 数据集上运行了超过8 HOURS,但没有结果。我有一个截止日期,我想知道我是否会得到结果……永远。

请帮忙

这是一个示例事件记录:

这是天气记录:

这是我的代码,直接输入到 mongo shell 中:

])

在一个小的测试子集上,我得到了所需的输出。所以代码有效,据我所知......

样本输出:

}

PS:我在 EVENTS 的事件窗口字段上有升序索引,在 WEATHER 的 DATE 上有升序和降序索引。

0 投票
2 回答
442 浏览

mongodb - 具有嵌套对象数组的 MongoDB 聚合

我正在努力从 Mongo DB 中获取一些汇总数据。我有以下收藏:

餐厅:

用户

简介

和社交媒体:

我的目标是获取与餐厅对象相关的所有对象。使用以下代码:

我得到这个:

请注意,嵌套数组socialMedias的社交媒体名称值错误(重复的“Instagram”名称,它应该是 Instagram 的一条记录和 Facebook 的另一条记录)。即使我尝试从餐厅集合中展开 socialMedias 数组,它也只返回具有社交媒体值的餐厅对象。

关于如何做到这一点的任何线索?

0 投票
0 回答
40 浏览

mongodb - 我们可以在模型级别应用投影吗?即使在聚合或 $lookup 中也可以访问该模型

Mongoose 为我们提供了应用聚合挂钩的能力,该挂钩仅在将聚合应用于特定模型时才有效。

上面的代码工作正常,当我们这样做时应用了正确的投影

但是当我们在另一个模型的聚合中查找用户时,不会应用相同的投影。

mongoose 中是否有一种方法,以便我们可以在模型级别应用投影,该投影适用于访问该模型的任何地方,并且我们不必在每个聚合查询中应用投影。

0 投票
2 回答
470 浏览

node.js - 聚合匹配的MongoDB查找返回一个空数组

这是我的用户文档

公司文件

这是我对用户的查询

当我运行此查询时,我将公司字段作为一个空数组,我在这里做错了什么?

0 投票
1 回答
57 浏览

node.js - Mongodb查找具有组合结果的元素数组

这是我的两个文件

订单文件:

产品文件:

所以我试图在订单文档中查找产品,但结果应该包含组合字段,如下所示:

不知道该怎么做,我应该在查找之外还是在内部进行?这是我的聚合

0 投票
1 回答
851 浏览

mongodb - Mongo 查找返回所有值

我有 2 个集合,如下所示:

需要从分支集合中获取所有具有可用 custId 的分支假日以及分支集合中的分支代码。(branches.custId = branchHolidays.custId)

对于 join 的第一部分,我尝试了以下查询,但我从branchHolidays集合中获取了所有字段。

上面的查询返回branchHolidays集合中的所有文档。我是 mongo 的新手,但我无法弄清楚问题所在。已经完成了大多数 SO 查询,但没有找到任何有帮助的东西。

注意:在分支集合中有多个分支代码映射到 1 个 custId 。

0 投票
1 回答
109 浏览

mongodb - MongoDB聚合管道内部数组映射

我正在尝试在两个集合之间执行查找操作,如下所示,

首次采集记录:

第二次收集记录

我正在尝试以以下格式获取输出,以匹配第一个集合中的 field1 名称“FIELD”。

对于匹配操作后的聚合管道,我仍然坚持如何创建查找操作以检索与第一个映射的第二个集合条目。是否有可能做到这一点或有任何其他方式来实现它?

0 投票
1 回答
440 浏览

mongodb - 如何获取所有 ROOT 文档的 id 列表以传递给 $lookup 管道 MongoDb

我有 2 个收藏:

users收藏:

locations收藏:

我想加入users收藏与locations收藏。我的查询:

为了优化这个聚合查询,我想在 stage 之后获取用户 id 列表$match,然后将此用户 id 列表传递到属于过滤用户的过滤器位置$geoNear的阶段。$lookup所以这个$geoNear阶段不会计算所有的位置。我已经阅读了 mongo 文档,也阅读了这个站点中的问题,但我找不到答案。对此的任何想法表示赞赏,谢谢

0 投票
1 回答
4447 浏览

node.js - MongoDB $lookup 与 Mongoose 填充

我已经看过这个和其他类似标题的问题,没有人回答我的问题。

我正在阅读我阅读的猫鼬文档

MongoDB 在 >= 3.2 版本中具有类似连接的 $lookup 聚合运算符。Mongoose 有一个更强大的替代方法,称为 populate(),它允许您引用其他集合中的文档。

in mongoose如何populate()使其比 MongoDB 更强大$lookup

mongoose 不是一个可以帮助 nodejs 用户使用 mongodb 的工具吗?如果是这样,mongoose 怎么能拥有 MongoDB 没有的功能呢?喜欢populate()

mongoose 的方法是在幕后populate()使用 MongoDB 的吗?$lookup

0 投票
1 回答
457 浏览

mongodb - 查找文档并仅返回缺失值

我有 2 个这样的集合,作为A1.5kk 文档集合:

我想查询 中A不存在的元素B。这是我到目前为止得到的:

这确实以这种模式返回:

好吧,我希望添加一个 $match 子句来仅包含 b 为空数组的子句。就像是${match: { b: {$size: 0} } }

问题是这个查询似乎花费了太长时间。我从未见过它工作,因此我不知道这是正确的方法。

有什么可以让它表现得更好或有什么不同的方法来获得它吗?

例如,如果我强制连接错误,它将返回一个空数组b。但是查询这个数组的大小总是很慢,即使我查询{$size: 1}99,9% 的结果也是如此。我想知道我是否可以做这样的事情来在加入期间只选择缺失的值:

{$lookup.pipeline: [{$myself: null}] }

请问有什么想法吗?

谢谢