当前位置: 首页 > 知识库问答 >
问题:

如何将多个文档从单个集合转换为包含一个数组的单个文档

慕弘深
2023-03-14

我有一个聚合管道,几乎可以实现我想要的功能。我使用了匹配/解开/项目/排序来获得99%的方式。它正在返回多个文档:

[
{ 
    "_id" : 254.8
},
{ 
    "_id" : 93.7
},
{ 
    "_id" : 89.9
},
{ 
    "_id" : 94.15
},
{ 
    "_id" : 102.1
},
{ 
    "_id" : 93.9
},
{ 
    "_id" : 102.7
}
]

注意:我添加了数组括号和逗号以使其更具可读性,但您也可以将其理解为:

{ 
    "_id" : 254.8
}
{ 
    "_id" : 93.7
}
{ 
    "_id" : 89.9
}
{ 
    "_id" : 94.15
}
{ 
    "_id" : 102.1
}

我需要一个文档中值数组中所有7个文档的ID字段的内容:

{values: [254.8, 93.7, 89.9, 94.15, 102.1, 93.9, 102.7]}

一旦我有了结果,就可以用JS对其进行排序,但如果可能的话,我宁愿在管道中进行排序,这样我的JS就可以保持100%的通用性,并且只返回纯管道数据。

共有1个答案

蒙胤
2023-03-14

以下是您需要完成的工作:

db.collection.aggregate([
  {
    "$group": {
      "_id": null,
      "values": {
        $push: "$_id"
      }
    }
  },
  {
    "$project": {
      _id: false
    }
  }
])

结果将是:

[
  {
    "values": [
      254.8,
      93.7,
      89.9,
      94.15,
      102.1,
      93.9,
      102.7
    ]
  }
]

https://mongoplayground.net/p/pTmR_rni0J1

 类似资料:
  • 在这里你可以看到我正在处理的一些文件。 与我最相似的问题是这个问题(将一个文本文件文件夹合并到一个CSV中,每个内容都在一个单元格中),但我无法实现那里提出的任何解决方案。 我尝试的最后一个是Nathaniel Verhaaren在前面提到的问题中提出的Python代码,但我得到了与问题作者完全相同的错误(即使在实施了一些建议之后): 与我类似的其他问题(例如,Python:将多个。txt文件解析

  • 问题内容: 我有一个无缘无故的多维数组 我想将此数组转换为这种形式 任何想法如何做到这一点? 问题答案: 假设此数组可能是(也可能不是)冗余嵌套,并且您不确定它的深度,可以为您展平它:

  • 问题内容: 如何将多个PDF文件合并/转换为一个大PDF文件? 我尝试了以下操作,但是目标文件的内容不符合预期: 我需要一个非常简单/基本的命令行(CLI)解决方案。最好的办法是,如果我可以将合并/转换的输出直接传送到管道中(就像我之前在这里提出的问题中最初尝试的那样:Linux管道(convert->pdf2ps-> lp)。 问题答案: 抱歉,我设法使用Google自己找到了答案,还有些运气:

  • 我有这个数据集: 我想用聚合来实现这种形式: 其中文档流组合成单个文档内的单个数组字段,我想在其中添加一些额外的字段。初始数据集在聚合管道中的第n个阶段后检索。 鉴于所有这些: 下一阶段应该是什么? 我需要$group吗? 我的下一阶段应该是什么样子?

  • 数据帧: 我遵循了一个类似问题的解决方案:如何从for循环中构建和填充熊猫数据帧? 您可以看到这些值都是准确的,但是它返回了每个索引的整个值列表 此输出看起来正确,但正如您所看到的,只返回第一组

  • 我有一个问题,但在我看来,我看到的所有解决方案都在解决一个比我更复杂的问题。 我对MongoDB比较陌生,但我一直在将它与Apache Neach一起使用来存储抓取的文档。由于我分阶段抓取,并以不同的方式评估每个抓取的结果,以获取统计数据,因此我一直将结果存储在不同的集合中。 我所要做的就是把这些收藏放在一起成为一个大的收藏,这样我就可以翻译和分类。所有字段都是相同的,因此我不需要添加任何新字段。