当前位置: 首页 > 编程笔记 >

MongoDB将带有数组的记录转换为新集合中的多个记录

仇正豪
2023-03-14
本文向大家介绍MongoDB将带有数组的记录转换为新集合中的多个记录,包括了MongoDB将带有数组的记录转换为新集合中的多个记录的使用技巧和注意事项,需要的朋友参考一下

为此,可以将$out与aggregate()和$undend一起使用。让我们用文档创建一个集合

> db.demo757.insertOne(
...    {
...       "id": 101,
...       "Name": ["John", "Bob", "Chris"]
...    }
... );
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5eb025745637cd592b2a4ae2")
}
> db.demo757.insertOne(
...    {
...       "id": 102,
...       "Name": ["David"]
...    }
... );
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5eb025755637cd592b2a4ae3")
}

在find()方法的帮助下显示集合中的所有文档-

> db.demo757.find();

这将产生以下输出-

{ "_id" : ObjectId("5eb025745637cd592b2a4ae2"), "id" : 101, "Name" : [ "John", "Bob", "Chris" ] }
{ "_id" : ObjectId("5eb025755637cd592b2a4ae3"), "id" : 102, "Name" : [ "David" ] }

以下是将具有数组的一个记录转换为新集合中的多个记录的查询-

> db.demo757.aggregate([
...    {$unwind: '$Name'},
...    {$project: {_id: 0}},
...    {$out: 'demo758'}
... ])
> db.demo758.find();

这将产生以下输出-

{ "_id" : ObjectId("5eb02582192bedc4738b5881"), "id" : 101, "Name" : "John" }
{ "_id" : ObjectId("5eb02582192bedc4738b5882"), "id" : 101, "Name" : "Bob" }
{ "_id" : ObjectId("5eb02582192bedc4738b5883"), "id" : 101, "Name" : "Chris" }
{ "_id" : ObjectId("5eb02582192bedc4738b5884"), "id" : 102, "Name" : "David" }

 类似资料:
  • 在mongodb聚合调用中,如何使用$group操作符将管道中的所有文档分组为一个结果? 假设我有一组记录,看起来像这样: 我想使用聚合函数在数据库中查询在给定日期范围内注册的用户列表,并将其作为列表返回。我想要一个如下的结果: 我的查询如下所示: 到目前为止,一切顺利。我现在有一部分记录,所有记录的注册日期都在所需的范围内。但这就是我遇到麻烦的地方。现在,我想将所有这些记录分组到一个包含所有ID

  • 问题内容: 在我的存储过程中,我通过了一个过滤器(使用“ WHERE Column IN”子句)作为参数。参数的值以CSV形式给出。将CSV转换为记录集的最佳方法是什么。 例子:- 我需要将名称作为参数传递给CSV字符串,例如 。 问题答案: 看看Erland Sommarskog的文章。他对做这种事情的不同方式有深入的了解: SQL Server中的数组和列表

  • 问题内容: MongoDB菜鸟在这里… 好的,我有一个学生集合,每个学生的记录看起来都如下所示:我想按降序对“类型”:“作业”分数进行排序。 mongo外壳上的咒语是什么样的? 我正在尝试这个咒语… 但它不起作用。 问题答案: 您将需要在应用程序代码中或在MongoDB 2.2中使用新的AggregationFramework来操纵嵌入式数组。 Shell中的示例聚合: 样本输出:

  • 我目前正在从事一个项目,该项目需要利用存储在SQL db中的数据,其格式如下所示。 我需要做的,而且我很难找到一个工具来帮助,是获取这些数据,并创建一个多列的单一记录,该记录与ID和事件日期相分离。虽然我在网上找到了一些关于事件驱动处理程序的信息,但问题是,虽然我的标签上写着“event ”,但实际上存储的是被称为“Events”的单独的数据片段,这些数据片段实际上是单独的条目,它们经常(但不总是

  • 现有两个名为getDetails(…)的方法 。一个需要至少一个必需参数,另一个需要一个集合(不验证集合的内容/大小)。 问题是集合有时会作为空传递,并且根据我的业务案例,我总是期望至少传递一个值。因此,我需要将该方法设为私有,它接受集合。 我计划将下面的方法作用域设置为private,这样调用者就不会使用零属性调用此方法。 调用方方法之一是将集合对象传递给下面的getDetails, id.ge

  • 我为简单的类层次结构自动生成了Avro模式: 看起来是这样的: 此模式适用于使用普通Avro API将数据从JSON读取到。我尝试实现的下一件事是使用将所有此类对象存储到单个拼花文件中: 此代码在第一行失败 难怪AvroSchemaConverter包含以下代码行: 我的模式类型是UNION。非常感谢将此UNION模式映射(合并)到RECORD模式或任何其他建议的任何想法/帮助。 解决方案 1)使