相关疑难解决方法(0)

MongoDB 2.1聚合框架与名称匹配的数组元素的总和

这是一个关于在数组中添加一系列数据的最佳方法的问题,我必须匹配另一个元素.我正在尝试使用2.2聚合框架,我可以通过一个简单的组来实现这一点.

所以对于给定的一组文档,我试图获得这样的输出;

{
    "result" : [
            {
                "_id" : null,
                "numberOf": 2,
                "Sales" : 468000,
                "profit" : 246246,
            }
    ],
    "ok" : 1
}
Run Code Online (Sandbox Code Playgroud)

现在,我最初有一个文档列表,包含分配给命名属性的值,例如;

[
{
    _id : 1,
    finance: {
        sales: 234000,
        profit: 123123,
    }
}
,
{
    _id : 2,
    finance: {
        sales: 234000,
        profit: 123123,
    }
}
]
Run Code Online (Sandbox Code Playgroud)

这很容易加起来,但由于其他原因,结构不起作用.例如,可能有其他列,如"财务",我希望能够索引它们而不创建数千个索引,所以我需要转换为这样的结构;

[
{
    _id : 1,
    finance: [
        {
            "k": "sales",
            "v": {
                "description":"sales over the year",
                v: 234000,
            }
        },
        {
            "k": "profit",
            "v": {
                "description":"money made …
Run Code Online (Sandbox Code Playgroud)

mongodb

17
推荐指数
2
解决办法
9868
查看次数

如何对MongoDB子文档中的每个字段求和?

我在MongoDB中使用db.collection.aggregate时出现问题.

我有一个数据结构,如:

_id:...

Segment:{
  "S1":1,
  "S2":5,
  ...
  "Sn":10
}
Run Code Online (Sandbox Code Playgroud)

它意味着以下内容Segment:我可能有几个具有数值的子属性.我想把它们总结为1 + 5 + .. + 10

问题是:我不确定子属性名称,因为每个文档的段号都不同.所以我无法列出每个细分名称.我只是想使用类似for循环的东西来将所有值加在一起.

我试过像这样的查询:

db.collection.aggregate([

  {$group:{
    _id:"$Account",

    total:{$sum:"$Segment.$"}
])
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

mongodb aggregation-framework

6
推荐指数
2
解决办法
1万
查看次数

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
查看次数