设想一个集合,该集合在聚合的$match操作符上返回具有此结构的文档数组
A = {
slug:'a',
Rs:[{
_id:'foo',
attr2:'bar'
}]
}
所以基本上每个返回的文档都共享一个片段(这就是我将如何对它们进行分组),但是每个文档都有一个子文档数组,每个子文档都有不同的_id。
因此,当我使用{slug:“a”}执行$match聚合时,它返回一个数组[A0,A1,A2…]
等,它们共享同一段代码。我给每个医生打电话
接下来在管道中,我将它们分组并希望查看它们的Rs数组
{
$group:{
_id:'$slug',
arrays:{$push:'$rs'}
}
}
这将返回一个如下所示的文档
{
_id:"a",
arrays: [
[{_id:'foo',attr2:'bar'},{_id:'foo2',attr2:'beer'}], //The arrays of document A0
[*A1 arrays*], //the arrays of document A1
[*A2 arrays*]
]
}
所以这是将我所有的文档分组为一个,并将它们的subdoc数组作为我分组文档中的子数组,这是一个数组
数组的数组:[[A0Rs0, A0Rs1],[A1Rs0, A1Rs1],[A2Rs0等]]
我的总体目标是浓缩或展平这些数组,因此我没有一个数组,而是有一个包含所有值的单个数组,理想情况下,我希望使用聚合操作符来实现这一点。因此,与其像上面那样以数组结束,不如以
{
_id:"a",
arrays:[
{},{},{}... //all of the arrays. In fact these dont even have to be objects, I am after just the ID field of each object
]
}
我尝试了$concatarray和其他操作符的组合,不确定是否需要在$组之前添加其他步骤或聚合器,也不确定如何实现这一点。
我希望我的解释不会太混乱,如果有人能想出一个方法来做到这一点,我将非常感谢你的帮助!
如果有人想知道一种方法来获得正确的解决方案,因为我确信有不止一种方法,我通过使用多种操作符,从$unwind开始,成功地获得了我想要的结果。
$unWind基本上将您的父文档(带有数组的文档)分离为多个文档,数组中的每个元素一个。IT对您的所有结果都这样做,因此现在您不再拥有具有子文档数组的多个对象,而是拥有具有单个子文档的多个文档。然后您可以使用美元匹配和$group,因此最终您会得到一个包含您想要的所有结果的单个数组。如果您在这种情况下只关注一个数组,您还可以使用$project来减少文档中的字段数量。
我有以下 3 份文件。每个代表一个用户的联系人: 我需要通过数组元素对它们进行聚合/分组,这样我就可以识别重复的联系人(基于电子邮件id)。因为在文档(1 我尝试在java中使用$unwind和$group执行此操作,如下所示: 这按电子邮件ID对文档进行分组(这是正确的),但没有达到目的。 任何帮助都将不胜感激。 我需要实现的功能,用户可以在他的存储库可能重复的联系人提示。我需要聚合结果类似于:
我在尝试使用MongooseJs在Mongodb中按嵌套数组排序时遇到了一个小问题。 a)一个产品包含任务,每个任务都有子任务。 b)任务有顺序 这是一个示例产品文档: 结果: } 我正在使用MongoDB聚合管道来订购任务 结果: } 预期结果: 我真的很接近了,所有的排序似乎都在工作。我只需要一些帮助来将子任务放回父母体内。非常感谢任何帮助。 谢谢
我试图使用MongoDb列出展开嵌套数组。 一个产品包含任务,每个任务可以有零个、一个或多个子任务。 以下是产品文档示例: 结果: 聚合管道在对任务进行排序方面起到了很大的作用 有时任务没有子任务,例如: 当他们没有孩子的时候,还有什么可以帮助他们完成任务吗? 当前聚合: 期望的结果:
我的模式实现受到了mongo官方网站上这篇教程的影响 这基本上是为时间序列数据设计的模式,我将每个设备每小时的数据存储在单个文档中的数组中。我创建字段组合发送数据和时间的设备id。例如,如果id为的设备在发送数据,则我的 字段将变为
我有这个数据集: 我想用聚合来实现这种形式: 其中文档流组合成单个文档内的单个数组字段,我想在其中添加一些额外的字段。初始数据集在聚合管道中的第n个阶段后检索。 鉴于所有这些: 下一阶段应该是什么? 我需要$group吗? 我的下一阶段应该是什么样子?
系统在数据库中具有以下文档信息: 我已经尝试了使用 mongo java 驱动程序进行重新设置,下面是以下代码片段: 上面为我提供了带有两个元素的ArrayList的输出,第0个元素是带有键“systemName”的Document,值是带有两个元件的Array List。第1个位置元素与键为“systemUsageAttrs”的Document一起,值为ArrayList,包含两个元素,即所有系