给我找一个相当于SQL的Mongo,它有distinct、group和order by



请帮我找到SQL的MongoDb等价物:

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

除了分组之外的所有内容:

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

但对于分组,你要么看MapReduce,要么看新的聚合框架(聚合框架还没有稳定的构建,它只有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的人),请放心:)

相关内容

最新更新