复杂的mongodb查询

时间:2013-01-31 08:36:50

标签: mongodb

我是mongo的新手,我正在尝试做一个简单的查询(至少在sql中这很简单),但我无法做到正确。我用的是java驱动程序 我的收藏包含文件:

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

我想找一个用户:“bb”上个月是否购买了行动,总金额超过1000(我想要$sum金额)
我如何在Mongodb中做到这一点?

由于

1 个答案:

答案 0 :(得分: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种类型。