【问题标题】:MongoDB aggregation pipeline PHP - $project previous stage without subarrayMongoDB 聚合管道 PHP - $project 前一阶段没有子数组
【发布时间】:2016-10-07 11:32:32
【问题描述】:

我的聚合管道中有一个像这样的子数组结构:

  {
    "_id": "london_10:2016-10-07 12",
    "data": {
      "voltage_a": 0.008888,
      "voltage_b": 0.008888,
      "voltage_c": 0.008888,
    },
    "Voltage (V)": 0.008888,
    "datetime": "2016-10-07T11:25:46"
  },

在 $project 阶段,我正在传递当前存在的子数组“数据”中的所有内容:

  [
    '$project' => [
      'data' => '$data',
      'Voltage (V)' => [
        '$divide' => [
          ['$add' => ['$data.voltage_a', '$data.voltage_b', '$data.voltage_c']]
        ],
      ],
     ]
   ]

如何投影数据,使其输出与“电压(V)”和“日期时间”相同的电压_a、电压_b和电压_c,即平面结构?

【问题讨论】:

  • 你要实现上层结构对吧?
  • 你能发布你的预期输出吗?

标签: php mongodb mongodb-query aggregation-framework mongodb-aggregation


【解决方案1】:

对于具有与"Voltage (V)""datetime" 相同级别的voltage_avoltage_bvoltage_c 的输出的平面结构,请按如下方式运行您的管道:

[
    '$project' => [
        'voltage_a' => '$data.voltage_a',
        'voltage_b' => '$data.voltage_b',
        'voltage_c' => '$data.voltage_c',
        'Voltage (V)' => [
            '$divide' => [
                [ '$add' => ['$data.voltage_a', '$data.voltage_b', '$data.voltage_c'] ]
            ],
        ],
        'datetime' => 1
    ]
]

【讨论】:

  • 谢谢。这是通过明确说明所有字段来做到这一点的唯一方法吗?我比示例中的 3 多得多。
  • 是的,这是唯一的办法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多