mongodb - 根据两个字段将文档拆分为两个文档(带聚合)

标签 mongodb aggregation-framework

我有一个这样的文件:

{
  'name': 'douglas'
  'datetime_created': '2019-10-24',
  'datetime_expiration': '2019-01-12'
}

我想将此文档拆分为两个文档,按字段 datetime_createddatetime_expiration .
预期输出:
{
  'name': 'douglas'
  'datetime_created': '2019-10-24'
},
{
  'name': 'douglas'
  'datetime_expiration': '2019-01-12'
}

我怎样才能用 aggregation 做到这一点?

最佳答案

分3步:

创建包含 2 个项目的数组 + $unwind + $replaceRoot$replaceWith

db.collection.aggregate([
  {
    $project: {
      data: [
        {
          name: "$name",
          datetime_created: "$datetime_created"
        },
        {
          name: "$name",
          datetime_expiration: "$datetime_expiration"
        },

      ]
    }
  },
  {
    $unwind: "$data"
  },
  {
    $replaceRoot: {
      newRoot: "$data"
    }
  }
])

MongoPlayground

关于mongodb - 根据两个字段将文档拆分为两个文档(带聚合),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59900551/

相关文章:

node.js - Mongodb聚合:Passing arguments to custom function

node.js - MongoDB:动态计数

Docker 中的 Mongodb : numactl --interleave=all explanation

当外部字段是对象数组时的 MongoDB 查找

mongodb - Windows MongoDB Compass 没有显示集合信息,但 Ubuntu MongoDB Compass 显示了什么?

mongodb - 使用聚合框架连接 MongoDB 3.4 中的数组元素

mongodb - Mongo - 匹配对象键可变的地方

mongodb - 从 MongoDB 中的对象数组中删除单个对象

java - 使用聚合读取时,Mongodb java 驱动程序会自动将日期转换为本地计算机时区

mongodb - $group 在 mongodb 中嵌套数组