相关疑难解决方法(0)

mongodb聚合多个未知的嵌套密钥

我有一个名为'InventoryPerDay'的文档,其中包含每天商店的库存:

{
  _id: "20131202/store_a",
  _metadata: {
    date: ISODate("2013-12-02T00:00:00Z"),
    store: "store_a"
  },
  inventory: {
    quantity: {
      item_44: 1350,
      item_32: 1,
      item_2: 1,
      item_9: 1
    }
  }
},
{
  _id: "20131201/store_a",
  _metadata: {
    date: ISODate("2013-12-01T00:00:00Z"),
    store: "store_a"
  },
  inventory: {
    quantity: {
      item_44: 1000,
      item_32: 5,
      item_2: 10
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我需要两天内store_a中每件商品的总数量."数量"哈希中的项目未知.您可以看到"item_9"存在于2013年12月12日,但不适用于2013年12月1日.

如何使用mongodb中的聚合在多个文档中汇总未知的嵌套密钥?

以上示例的结果应该是:

{
  store: "store_a",
  inventory: {
    quantity: {
      item_44: 2350,
      item_32: 6,
      item_2: 11,
      item_9: 1
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

mongodb mongodb-query aggregation-framework

5
推荐指数
1
解决办法
2056
查看次数

MongoDB汇总字段而无需事先知道所有字段

在不事先掌握所有指标的情况下,如何计算以下指标的总和?我可以使用聚合框架或MapReduce完成此操作吗?

[
  {
   player_id: '123',
   timestamp: <sometime>,
   metrics: {
     points_per_game: 1,
     rebounds_per_game: 2,
     assist_per_game: 3,
   }
  },
  {
    player_id: '123',
    timestamp: <sometime>,
    metrics: {
      points_per_game: 1,
      rebounds_per_game: 2,
    }
  },
  {
    player_id: '345',
    timestamp: <sometime>,
    metrics: {
      points_per_game: 1,
      rebounds_per_game: 2,
      point_in_the_paint_per_game: 2
    }
  }
]
Run Code Online (Sandbox Code Playgroud)

我想得到以下结果

[
 {
   player_id: '123',
   metrics: {
     points_per_game: 2,
     rebounds_per_game: 4,
     assist_per_game: 3,
   }
 },
 {
   player_id: '345',
   metrics: {
     points_per_game: 1,
     rebounds_per_game: 2,
     point_in_the_paint_per_game: 2
   }
 }
]
Run Code Online (Sandbox Code Playgroud)

我无法执行以下操作,因为这将要求我了解每个指标:

db.stats.aggregate([
   {$group: {
     _id: …
Run Code Online (Sandbox Code Playgroud)

mongodb mongodb-query aggregation-framework

5
推荐指数
1
解决办法
78
查看次数