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 } } )
原文:https://www.cnblogs.com/lyc94620/p/12148882.html