1. ホーム
  2. mongodb

[解決済み] mongodb - 検索と集計の方法

2023-03-21 19:24:11

質問

以下のスキーマを持つドキュメントを含むコレクションを持っています。私は性別が女性であることを含むすべてのドキュメントをフィルタリング/検索し、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 }