如何使用聚合将值字段值设置为true

时间:2015-02-11 15:03:01

标签: javascript node.js mongodb mongoose

Model.aggregate([
   {
    '$group': {
       '_id': '$id',
       'name': { '$first': '$name'  },
       'tof': { $sum: { $eq:["$tof",true] } },
    }
   }
]) .... // rest of the code.

我试图将tof(true或false)字段求和,但仅当值为true时,但是不能像我正在尝试的那样工作..

我在这里做错了什么?怎么办?

谢谢!

1 个答案:

答案 0 :(得分:2)

您可以在查找中省略它们,而不是像在这种情况下那样提取和迭代您不需要使用$cond的文档:

Model.aggregate([
   {
      '$match': {'tof': true}
   },
   {
    '$group': {
       '_id': '$id',
       'name': { '$first': '$name'  },
       'tof': { $sum: 1 },
    }
   }
])

但是,由于您使用多个计数,因此需要$condhttp://docs.mongodb.org/manual/reference/operator/aggregation/cond/),所以这是一个示例:

Model.aggregate([
   {
    '$group': {
       '_id': '$id',
       'name': { '$first': '$name'  },
       'tof': { $sum: {$cond: [{$eq:['$tof', true]}, 1, 0]} },
    }
   }
])