MySQL与MongoDB查询互转(更新ing)

Mysql与MongoDB查询互转

mongo查询严格要求数据格式!

1、只想查出某些数据,不想全部数据都查出来

mysql:
select name from user;

mongo:
db.user.find(
    {},
    {
    _id : 0,
    name : 1
  }
)

说明:user是集合的名称,find里面两个{},第一个留空是想所有数据都查出来,加条件的话类型mysql的where,第二个{}表示的意思类似mysql后面的select部分,0代表不显示,1代表显示。

2、分页查询

mysql:
select * from user limit 0,10;

mongo:
db.user.find({}).skip(0).limit(10)

说明:mongo的skip和limit与mysql同理,mysql的limit第一个参数是跳过的数据量与mongo的skip类似,比如第三页的数据是从20开始的,mysql:limit 20,10,即:limit (page-1)*size,size

3、条件查询

mysql:
select name from user where id = 1;

mongo:
db.user.find(
    {
        id : 1
    },
    {
        name : 1
    }
)

说明:由于有严格要求数据格式,若存到mongo的id是字符串格式的话,查询的条件得加上双引号""

4、范围查询

MySQL MongoDB remark
> $gt 大于
< $lt 小于
>= $gte 大于等于
<= $lte 小于等于
!= $ne 不等于
mysql:
select name from user where id > 1 and id < 10;

mongo:
db.user.find(
    {
        id : 
        {
            $gt : 1,
            $lt : 10
        }
    },
    {
        name : 1
    }
)

说明:mysql的between其实就是>=和<=,字符串的话用范围查询好像会有问题,慎用!

5、in查询

mysql:
select name from user where id in (1,2);

mongo:
db.user.find(
    {
        id :
        {
            $in : [1, 2]
        }
    },
    {
        name : 1
    }
)

说明:not in查询就把$in换成$nin

6、条件统计count

mysql:
select count(*) from user where id > 1;

mongo:
db.user.find(
    {
        id : 
        {
            $gt:1
        }
    }
).count()

7、all查询

mongo可以将数组存储起来,若想查询某个字段(是个数组)同时包含值a和b

db.user.find(
    {
        detail:
        {
            $all : ["7", "8"]
        }
    }
)

说明:这个查询的结果集,detail字段同时包含字符串7和字符串8

8、exists查询
比如我想找出所有包含字段name_real的结果集

db.user.find(
    {
        name_real : 
        {
            $exists : true
        }
    }
)


说明:上面查询的结果中,所有数据肯定都包含有name_real字段;改成false的话就变成不包含

9、is null查询

mysql:
select * from user where age is null;

mongo:
db.user.find(
    {
        age : null
    }
)

但是这样会有问题,这个查询会把那些没有age字段的结果也查出来,结合exists优化下

db.user.find(
    {
        age:
        {
            $in : [null], 
            $exists : true
        }
    }
)

查询is not null

db.user.find(
    {
        age:
        {
            $ne : null,
            $exists : true
        }
    }
)

猜你喜欢

转载自www.cnblogs.com/lyc94620/p/12148882.html