0

私はmongoを初めて使用し、単純なクエリ(少なくとも、SQLでは単純です)を実行しようとしていますが、正しく取得できません。私はJavaドライバーを使用しています。
私のコレクションにはドキュメントが含まれています:

{"name":"bb",
 "action": {"Type":"Buy","amount":78},
 "date": "Jan 31, 2013 10:31:20 AM"}

ユーザー「bb」が先月、合計で1000を超える金額の購入アクションを実行したかどうかを確認したい($sum金額が欲しい)
Mongodbでそれを行うにはどうすればよいですか?

ありがとう

4

1 に答える 1

2

このようなもの:

db.col.aggregate([
    {$match: {name: 'bb'}},
    {$unwind: '$action'}, 
    {$group: {_id: '$name', sum_amount: {$sum: '$action.amount'}}},
    {$match: {sum_amount: {$gt: 1000}}}
])

トリックを行います。ここでは、アクションのタイプは、のみであると想定していbuyます。そうでない場合は、 :$matchの後に追加のアクションを実行できます。$unwind

{$match: {'action.Type': 'Buy'}}

タイプのみを取得しBuyます。

于 2013-01-31T08:42:40.520 に答える