嵌套对象上的MongoDB聚合

时间:2018-02-02 19:32:47

标签: node.js mongodb mongoose

知道为什么这不会使平均值回归(返回null)?

Pattern.aggregate([
      { $match: {
          name: 'asdfaddf'
      }},
      { $unwind: "$ratings" },
      { $group : { _id: "test", ratings : {  $avg : "$ratings.rating" } } }

我的文档看起来像这个

"ratings" : [ 
        {
            "rating" : "5",
            "userID" : "5a73ef842aed0f399ff4ee40",
            "_id" : ObjectId("5a74893230eed03f1ebf3c5f")
        }, 
        {
            "rating" : "3",
            "userID" : "awefawefawfawef",
            "_id" : ObjectId("5a74893230aad03f1ebf3c5e")
        }
    ],

1 个答案:

答案 0 :(得分:0)

看起来像使用非数字值,作为mongodb文档中的状态,这些将被忽略:

  

$ avg忽略非数字值,包括缺失值。如果平均值的所有操作数都是非数字的,则$ avg将返回null,因为零值的平均值未定义。

https://docs.mongodb.com/manual/reference/operator/aggregation/avg/#non-numeric-or-missing-values