【问题标题】:Restructure in aggregation monogdb聚合MongoDB中的重组
【发布时间】:2020-12-21 03:08:39
【问题描述】:

我可以用 mongodb 的聚合框架重构数据吗

array: [{date: "27-08-12", nestedArray: [0, 1, 2]}, {date: "18-08-12", nestedArray: [0, 2]}]

array: [{"27-08-12": [0, 1, 2]}, {"18-08-12": [0, 2]}]

?

【问题讨论】:

  • 取决于你想用它做什么。你想查询它,你想更新数据库还是?提供更多信息以及您拥有什么、您想要实现什么、应该在哪里使用/存储结果以及在什么条件下。
  • 这个主题的变化太多,无法猜测。请提供 2 个输入文档和 1 个(或更多,如果合适的话)输出文档以及您尝试到达那里的内容。另外:将日期之类的 rval 转换为 lvals(键)通常会导致以后的混乱和麻烦。

标签: mongodb aggregation-framework


【解决方案1】:

这个呢?

db.collection.aggregate([
  {
    "$unwind": "$array"
  },
  {
    "$group": {
      "_id": null,
      "data": {
        "$push": {
          k: "$array.date",
          v: "$array.nestedArray"
        }
      }
    }
  },
  {
    "$project": {
      "array": {
        "$arrayToObject": "$data"
      }
    }
  }
])

Mongo Playground

【讨论】:

  • 小心;这仅在单个文档上可靠地工作。如果任何日期相同,请更改为 {$group: (_id: "$_id"}} 以使其工作多于一个文档。但是OP并没有把真实的数据集说得很清楚。
  • 我知道解决方案是有限的,但示例数据没有提供更多。
猜你喜欢
  • 2021-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-03
  • 1970-01-01
  • 1970-01-01
  • 2013-04-03
  • 2015-04-01
相关资源
最近更新 更多