MongoDB 各种数据查询


关于数据的查询,我单独写了一篇blog。

基本查询数据

代码含义
db.t_user.find();列出表中所有数据
db.t_user.findOne();查询集合中的第一条数据
db.t_user.count();统计表中数据总数

where 筛选条件

语法: db.t_user.find({筛选条件});

练习:

## 满足name是dong,的所有数据
> db.t_user.find({name:"dong"});

## 满足条件的第一行数据
> db.t_user.findOne({name:"dong"});

## 统计满足条件的行数
> db.t_user.count({name:"dong"});

指定查询显示的列(key)

之前我们的查询都是 select * from emp;
那么现在我们要这样查询 select ename , sal from emp;
语法: db.t_user.find({筛选条件} , {指定需要显示的字段:1});

说明:

1 查询结果中,只显示此列
0 查询结果中,不显示此列
1 & 0 不能混合使用

## 只显示age列
> db.t_user.findOne({name:'dong'} , {age:1})
{ "_id" : ObjectId("5e6d4b346f33220fb3e090d1"), "age" : 12 }

## 只显示age 和 add 列
> db.t_user.findOne({name:'dong'} , {age:1,add:1})
{ "_id" : ObjectId("5e6d4b346f33220fb3e090d1"), "age" : 12, "add" : "BJ" }


## 显示除了age 的所有其他列
> db.t_user.findOne({name:'dong'} , {age:0})
{
        "_id" : ObjectId("5e6d4b346f33220fb3e090d1"),
        "id" : 2,
        "name" : "dong",
        "add" : "BJ"
}

排序结果集

db.t_user.find({筛选条件} , {指定需要显示的字段:1}).sort({key:1 , key2:1}); -- 多列排序
说明

1 升序排序
-1 降序排序

## 按照age升序显示

> db.t_user.find().sort({age:1})
{ "_id" : ObjectId("5e6d4b346f33220fb3e090cf"), "add" : "BeiJing" }
{ "_id" : ObjectId("5e6d4b346f33220fb3e090d1"), "id" : 2, "name" : "dong", "age" : 12, "add" : "BJ" }
{ "_id" : ObjectId("5e6d4b346f33220fb3e090d2"), "id" : 3, "name" : "dong", "age" : 13, "add" : "BJ" }
{ "_id" : ObjectId("5e6d4b346f33220fb3e090d3"), "id" : 4, "name" : "dong", "age" : 14, "add" : "BJ" }
{ "_id" : ObjectId("5e6d4b346f33220fb3e090d4"), "id" : 5, "name" : "dong", "age" : 15, "add" : "BJ" }
{ "_id" : ObjectId("5e6d4b346f33220fb3e090d5"), "id" : 6, "name" : "dong", "age" : 16, "add" : "BJ" }
{ "_id" : ObjectId("5e6d4b346f33220fb3e090d6"), "id" : 7, "name" : "dong", "age" : 17, "add" : "BJ" }
{ "_id" : ObjectId("5e6d4b346f33220fb3e090d7"), "id" : 8, "name" : "dong", "age" : 18, "add" : "BJ" }
{ "_id" : ObjectId("5e6d4b346f33220fb3e090d0"), "id" : 1, "name" : "jiang", "age" : 21, "add" : "BJ" }


## 按照age降序显示
> db.t_user.find().sort({age:-1})
{ "_id" : ObjectId("5e6d4b346f33220fb3e090d0"), "id" : 1, "name" : "jiang", "age" : 21, "add" : "BJ" }
{ "_id" : ObjectId("5e6d4b346f33220fb3e090d7"), "id" : 8, "name" : "dong", "age" : 18, "add" : "BJ" }
{ "_id" : ObjectId("5e6d4b346f33220fb3e090d6"), "id" : 7, "name" : "dong", "age" : 17, "add" : "BJ" }
{ "_id" : ObjectId("5e6d4b346f33220fb3e090d5"), "id" : 6, "name" : "dong", "age" : 16, "add" : "BJ" }
{ "_id" : ObjectId("5e6d4b346f33220fb3e090d4"), "id" : 5, "name" : "dong", "age" : 15, "add" : "BJ" }
{ "_id" : ObjectId("5e6d4b346f33220fb3e090d3"), "id" : 4, "name" : "dong", "age" : 14, "add" : "BJ" }
{ "_id" : ObjectId("5e6d4b346f33220fb3e090d2"), "id" : 3, "name" : "dong", "age" : 13, "add" : "BJ" }
{ "_id" : ObjectId("5e6d4b346f33220fb3e090d1"), "id" : 2, "name" : "dong", "age" : 12, "add" : "BJ" }
{ "_id" : ObjectId("5e6d4b346f33220fb3e090cf"), "add" : "BeiJing" }

## 可以多列排序

分页查询显示

这功能有点类似于mysql的limit
db.t_user.find().sort({...}).skip(启始条数).limit(每页显示记录数);

> db.t_user.find().sort({age:1}).skip(0).limit(2);
{ "_id" : ObjectId("5e6d4b346f33220fb3e090cf"), "add" : "BeiJing" }
{ "_id" : ObjectId("5e6d4b346f33220fb3e090d1"), "id" : 2, "name" : "dong", "age" : 12, "add" : "BJ" }

模糊查询

MongoDB中没有like,只能使用正则表达式

/ / 类似 %ong%

db.t_user.find({name:/ong/});       

高级查询

等值查询

  • 方法1
db.t_user.find({name:"jiang"});
  • 方法2 $eq
db.t_user.find({name:{$eq:"jiang"}});

多条件 and 查询

  • 方法1
db.t_user.find({name:"dong" , age:18} );
  • 方法2 $and
db.t_user.find({$and:[
                      {name:"dong"} ,
                      {age:18}
                     ]} );

多条件 or 查询

db.t_user.find({$or:[
                      {name:"dong"},
                      {age:18}
                     ]} );

非查询 $nor

查询名字不是jiang, 并且id 不是9

db.t_user.find({$nor:[  
                      {name:"jiang"} ,
                      {id:9}
                    ]
               });

比较符

比较符号代码
>$gt
<$lt
>=$gte
<=$lte
db.t_user.find({id:{$gt:6}});   -- 年龄大于6

db.t_user.find({id:{$gt:3 , $lt:8 }});   -- 年龄在某个区间内 大于3 小于8
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值