mongdb基础查询语法,分组后取每组第一条

 数据库     |      2020-02-11 01:39

查询中经常遇到这种查询,分组后取每组第一条。分享下一个SQL语句:

本文是参考本文末尾引用的文章,并加以整理修改而成

 

  1. 查询全部
--根据 x 分组后、根据 y 排序后取第一条select * from ( select ROW_NUMBER() over(partition by x order by y desc) RowNum  ,testTable.*  from testTable) as t1 where RowNum = 1

注:我使用MS SQL 08 R2

db.users.find()

与SQL对比:

 select * from users  
  1. 根据条件 = 查询
db.users.find({"age" : 27}) 

与SQL对比:

select * from users where age = 27 
  1. 多条件查询 and
db.users.find({"username":"joe","age":27})

与SQL对比:

 select * from users where useranem = 'joe' and age = 27
  1. 返回部分查询结果
db.users.find({},{"username":1,"email":1})
db.users.find({},{"username":1,"email":1,"_id":0})

1表示返回该字段,0表示不返回,_id如果不表示的话,默认返回

与SQL对比:

 select username,email from users
  1. 查询条件大于小于 >,<
db.users.find({"age" : {"$gte" : 18, "$lte" : 30}})

与SQL对比:

 select * from users where age >=18 and age <= 30 
  1. 查询条件不等于 !=
b.users.find({"username" : {"$ne" : "joe"}}) 

与SQL对比:

select * from users where username <> "joe"
  1. 查询条件在范围内 in
db.users.find({"ticket_no" : {"$in" : [725, 542, 390]}}) 

与SQL对比:

select * from users where ticket_no in (725, 542, 390)  
  1. 查询条件不在范围内 not in
db.users.find({"ticket_no" : {"$nin" : [725, 542, 390]}})

与SQL对比:

 select * from users where ticket_no not in (725, 542, 390)  
  1. 查询条件or
db.users.find({"$or" : [{"ticket_no" : 725}, {"winner" : true}]})   

与SQL对比:

select * form users where ticket_no = 725 or winner = true
  1. 查询条件求余
db.users.find({"id_num" : {"$mod" : [5, 1]}}) 

与SQL对比:

select * from users where (id_num mod 5) = 1  
上一篇:2005无法启动服务 下一篇:没有了