Yil*_*ang 2 sql mongodb language-translation
我想知道我们如何进行以下从 sql 到 mongoDB 的转换:
假设该表具有以下结构:
table
=====
-----
##id contribution time
1 300 Jan 2, 1990
2 1000 March 3, 1991
Run Code Online (Sandbox Code Playgroud)
我想找到一个按照贡献数量降序排列的 ids 排名列表。
'$' 这是我使用 sql 所做的:
select id, count(*) c from table group by id order by c desc;
Run Code Online (Sandbox Code Playgroud)
如何使用 count()、order() 和 group() 将这个复杂的 sql 转换为 mongoDB?
非常感谢!
设置测试数据:
db.donors.insert({donorID:1,contribution:300,date:ISODate('1990-01-02')}) db.donors.insert({donorID:2,contribution:1000,date:ISODate('1991) -03-03')}) db.donors.insert({donorID:1,贡献:900,日期:ISODate('1992-01-02')})
您可以使用MongoDB 2.2 中的新聚合框架:
db.donors.aggregate(
{ $group: {
_id: "$donorID",
total: { $sum: "$contribution" },
donations: { $sum: 1 }
}},
{ $sort: {
donations: -1
}}
)
Run Code Online (Sandbox Code Playgroud)
为了产生期望的结果:
{
"result" : [
{
"_id" : 1,
"total" : 1200,
"donations" : 2
},
{
"_id" : 2,
"total" : 1000,
"donations" : 1
}
],
"ok" : 1
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1462 次 |
最近记录: |