我试图在Mongodb中执行以下sql查询
select organization from users
group by organization
having 2014-07-10 > date > 2014-07-10
(我知道如果SQL语法是否正确,但我希望我已经给出了一个粗略的我在这里尝试做什么)
首先我试着看看昨天添加了多少用户
>>> users.find({u"timeCreated":{"$gte":date_yesterday, "$lt":date_today}}).count()
6
现在我尝试按照他们所属的组织对用户进行分组,并使用以下monogo聚合查询
>>> user.aggregate([{'$group':{'_id': "$organization",'count':{"$sum":1}}},{"match":{u'timeCreated':{"$gte":date_yesterday, "$lt":date_today}}}])
结果是
{u'ok': 1.0, u'result':[]}
这不是这样的查询。
我甚至尝试使用以下查询来获取今天之前的所有条目
>>> user.aggregate([{'$group':{'_id': "$organization",'count':{"$sum":1}}},{"match":{u'timeCreated':{"$lt":date_today}}}])
但输出保持不变。
以下命令正常工作并提供组织列表
>>> user.aggregate({'$group':{'_id': "$organization",'count':{"$sum":1}}})
任何人都可以告诉我,我要去哪里吗?
P.S。我是mongoDB的新手
答案 0 :(得分:1)
反过来说。您想先匹配项目
user.aggregate([
{"$match": {'timeCreated':{ "$gte":date_yesterday, "$lt":date_today } }},
{'$group':{'_id': "$organization",'count':{"$sum": 1 } }}
])
另请注意,因为这是"管道" $group
或 $project
等操作具有破坏性"并且只发出你实际指定的字段。