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的翻译的主要内容,如果未能解决你的问题,请参考以下文章