Mongodb 如何使用$avg对数组中的字段进行平均

Mongodb 如何使用$avg对数组中的字段进行平均,mongodb,aggregation-framework,Mongodb,Aggregation Framework,我使用的是Mongodb 3.2,我需要计算数组中所有字段的值 这是我收藏的一个例子 { "memTotal" : 33730525659, "swapTotal" : 16936129790, "queueList" : [ { "usedSlots" : 2, "totalSlots" : 8, "reservedSlots" : 0, }, { "usedSlots" : 2, "totalSl

我使用的是Mongodb 3.2,我需要计算数组中所有字段的值

这是我收藏的一个例子

{
  "memTotal" : 33730525659,
  "swapTotal" : 16936129790,
  "queueList" : [
    {
      "usedSlots" : 2,
      "totalSlots" : 8,
      "reservedSlots" : 0,
    },
    {
      "usedSlots" : 2,
      "totalSlots" : 8,
      "reservedSlots" : 0,
    },
    {
      "usedSlots" : 2,
      "totalSlots" : 8,
      "reservedSlots" : 0,
    },
  ],
},
{
  "memTotal" : 33730525659,
  "swapTotal" : 16936129790,
  "queueList" : [
    {
      "usedSlots" : 2,
      "totalSlots" : 8,
      "reservedSlots" : 0,
    },
    {
      "usedSlots" : 2,
      "totalSlots" : 8,
      "reservedSlots" : 0,
    },
    {
      "usedSlots" : 2,
      "totalSlots" : 8,
      "reservedSlots" : 0,
    },
  ],
},
{
  "memTotal" : 33730525659,
  "swapTotal" : 16936129790,
  "queueList" : [
    {
      "usedSlots" : 2,
      "totalSlots" : 8,
      "reservedSlots" : 0,
    },
    {
      "usedSlots" : 2,
      "totalSlots" : 8,
      "reservedSlots" : 0,
    },
    {
      "usedSlots" : 2,
      "totalSlots" : 8,
      "reservedSlots" : 0,
    },
  ],
},
我需要计算“queueList.useSlots”、“queueList.totalSlots”、“queueList.totalSlots”的平均值,请记住queueList是一个数组

到目前为止,我所做的是使用聚合,首先是I{$unwind:“queueList”},{$group:{useSlots:{$avg:“queueList.useSlots”}}

但这返回了错误的平均值:-(


任何帮助都将不胜感激:-)谢谢

请尝试下面的查询

db.memory.aggregate([
{$unwind : "$queueList"}, 
{$group : {_id : "$_id",
   "avgUseSlots" :{$avg :  "$queueList.usedSlots"},
   "avgTotSlots" :{$avg :  "$queueList.totalSlots"},
   "avgReservedSlots" :{$avg :  "$queueList.reservedSlots"}
   }
   }
 ]);
输出:-

{
    "_id" : ObjectId("57816e7285ae6441865d83e4"),
    "avgUseSlots" : 2,
    "avgTotSlots" : 8,
    "avgReservedSlots" : 0
}

我想你很快就能回答这个问题了,在
组中试试这个
{$group:{“\u id”:“$\u id”,“useSlots”:{“$avg”:“queueList.useSlots”}}}
这里的预期结果是什么?