SQL到MongoDB的翻译(sql to mongodb translation)

2019-10-17 04:10发布

我不知道我们如何可以从SQL做下面的翻译的MongoDB:

假设表有以下结构:

table
=====
-----
##id contribution         time

1            300                  Jan 2, 1990

2            1000                 March 3, 1991

我想找到他们的捐款数目的下降订单ID的排行榜。

“$”这是我使用的是什么SQL:

select id, count(*) c from table group by id order by c desc;

我怎么能这样复杂的SQL使用count(),为了()和组()翻译成MongoDB的?

非常感谢你!

Answer 1:

与设置的测试数据:

db.donors.insert({donorID:1,贡献:300,日期:ISODate( '1990年1月2日')})db.donors.insert({donorID:2,贡献:1000,日期:ISODate('1991 -03-03 ')})db.donors.insert({donorID:1,贡献:900,日期:ISODate(' 1992' 年1月2日)})

您可以使用新的聚合框架在MongoDB中2.2:

db.donors.aggregate(
    { $group: {
        _id: "$donorID",
        total:   { $sum: "$contribution" },         
        donations: { $sum: 1 }
    }},
    { $sort: {
        donations: -1
    }}
)

为了产生所需的结果:

{
    "result" : [
        {
            "_id" : 1,
            "total" : 1200,
            "donations" : 2
        },
        {
            "_id" : 2,
            "total" : 1000,
            "donations" : 1
        }
    ],
    "ok" : 1
}


Answer 2:

检查MongoDB的聚合

db.colection.group(
  {key: { id:true},
  reduce: function(obj,prev) { prev.sum += 1; },
  initial: { sum: 0 }
});

之后,你得到的结果,通过排序它sum



文章来源: sql to mongodb translation