1

以下の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;

count()、order()、group()を使用して、この複雑なSQLをmongoDBに変換するにはどうすればよいですか?

どうもありがとうございます!

4

2 に答える 2

4

テストデータの設定:

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、contribution:900、date:ISODate(' 1992-01-02')})

MongoDB2.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
}
于 2012-08-30T12:52:52.020 に答える
2

mongodb 集約を確認する

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

結果を取得したら、 で並べ替えますsum

于 2012-08-30T03:08:58.870 に答える