找到我相当于具有不同,组和顺序的SQL的Mongo

时间:2012-02-17 12:46:54

标签: sql mongodb

请帮我找一下SQL的MongoDb等价物:

select val from tblName where colName1 = 7 
group by colName2 
order by colName3 desc, colName4 desc

1 个答案:

答案 0 :(得分:4)

除分组外的所有内容:

db.tblName.find({colName1:7},{val:1}).sort({colName3:-1, colName4:-1})

但是对于分组,你要么看MapReduce,要么看新Aggregation Framework(聚合框架还没有稳定版本,只有2.1.0和奇数版本不准备生产)

使用聚合框架,基于快速扫描文档并且无法访问最新的Mongo(即复制和粘贴不起作用 - 它是开始的基础):

db.tblName.aggregate(
    {$match : {colName1:7}}, //filter by colName1=7
    {$project: {val:1,colName2:1,colName3:1,colname4:1}}, //keep only the specified fields
    {$group: {colname2:1}}, //group by colName2 - this is the bit I'm least clear on
    {$sort: {colName3:-1; colname4:-1}}, //sort
    {$project: {val:1}} //keep only the val column
)

如果有人想要改进语法(即有权访问Mongo with Aggregation的人),请随意:)