sql到mongodb的翻译

Posted

技术标签:

【中文标题】sql到mongodb的翻译【英文标题】:sql to mongodb translation 【发布时间】:2012-08-30 03:00:48 【问题描述】:

我想知道我们如何进行以下从 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?

非常感谢!

【问题讨论】:

接受答案...或者如果某些内容不适合您,请提供信息.. 【参考方案1】:

设置测试数据:

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'))

您可以在 MongoDB 2.2 中使用新的Aggregation Framework:

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

【讨论】:

【参考方案2】:

查看mongodb Aggregation

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

得到结果后,按sum排序。

【讨论】:

以上是关于sql到mongodb的翻译的主要内容,如果未能解决你的问题,请参考以下文章

(译文)SQL与Mongodb聚合之前的对应关系

mongodb配置文件的英文翻译

PyMongo官方文档翻译——VNPY

数据库和集合(MongoDB 文档翻译和解读)

sql子查询到mongodb

mongodb到sql的转换1