mongodb - 如何查找然后聚合

我的集合包含具有以下架构的文档。我想过滤/查找所有包含女性性别的文档并汇总 Brainscore 的总和。我尝试了下面的语句,它显示了一个无效的管道错误。

db['!all'].aggregate({ $and: [ {'GENDER' :  'F'} , {'DOB' : { $gte : 19400801, $lte : 20131231 }} ]  }, { $group : { _id : "$GENDER", totalscore : { $sum : "$BRAINSCORE" } } } )

架构:

{
    "_id" : ObjectId("53f63fc8f2b643f6ebb8a1a9"),
    "DOB" : 19690112,
    "GENDER" : "F",
    "BRAINSCORE" : 65
},
{
    "_id" : ObjectId("53f63fc8f2b643f6ebb8a1a2"),
    "DOB" : 19950116,
    "GENDER" : "F",
    "BRAINSCORE" : 44
},
{
    "_id" : ObjectId("53f63fc8f2b643f6ebb8a902"),
    "DOB" : 19430216,
    "GENDER" : "M",
    "BRAINSCORE" : 71
}

最佳答案

您必须使用 $match :

db['!all'].aggregate([
  {$match:
    {'GENDER': 'F',
     'DOB':
      { $gte: 19400801,
        $lte: 20131231 } } },
  {$group:
     {_id: "$GENDER",
     totalscore:{ $sum: "$BRAINSCORE"}}}
])

输出:

{ "_id" : "F", "totalscore" : 109 }

https://stackoverflow.com/questions/25436630/

相关文章:

shell - 如何从 Mongo ObjectID 中提取创建日期

arrays - MongoDB:如何更新数组中的单个子元素,由数组中的索引引用?

node.js - 创建后如何在 mongoose 中填充子文档?

mongodb - MongoDB 和 CouchDB 是完美的替代品吗?

MongoDB - 如何查询集合中的嵌套项?

node.js - Node.js 和 Mongoose 的管理面板

mongodb - 如何在 MongoDB 中组织多对多关系

linux - 让 Linux 上的 MongoDB 监听远程连接

mongodb - 如何在 MongoDB 中汇总总和以获得总计数?

mongodb - meteor :意外的mongo退出代码100