Mongodb查询命令详解
前面我们简单的讲了下find方法,下面来深入的过一下它的用法以及常用的字方法。
下面是mongo中db.user.help()中对find方法的定义和解释:
db.user.find([query],[fields]) - query is an optional query filter. fields is optional set of fields to return. e.g. db.user.find( {x:77} , {name:1, x:1} )
其中fields参数的意图是要显示/不显示的字段列表,不赋值则返回全部字段(_id字段默认返回)。
其中key:flag(0/1)中flag==1表示该字段返回,除了_id字段外,指定的其他字段的flag值必须都一样
例:
/** 查找age==28的记录的_id,name,sex **/ db.user.find({age:28},{name:1,sex:1})
/** 该查询会报错,因为age必须为1,为0的话其实就不需要写 **/ db.user.find({age:28},{name:1,sex:1,age:0})
/** 查找age==28的记录的name和sex,_id字段不需要返回 **/ db.user.find({age:28},{name:1,sex:1,_id:0})
在数据库的where查询中的比较操作符常用有如下2类:
①: >, >=, <, <=, !=, =。
②:and,or,in,not in
在mongodb中也提供了对这些常用操作符的支持,
1、"$gt", "$gte", "$lt", "$lte", "$ne"对应了>, >=, <, <=, !=,上面的=没有特殊关键字,直接使用key:value即可。
2、 "$or", "$in","$nin"对应了or,in,not in,上面的and没有特殊关键字,直接使用逗号分隔的就是and。
/** 查询age>30的用户 **/ db.user.find({age:{$gt:30}})
/** 查询age<15的用户 **/ db.user.find({age:{$lt:15}})
/** 查询name in ("haha","hehe","jingli")的用户 **/ db.user.find({name:{$in:["haha","hehe","jingli"]}})
/** 查询 name in ("haha","hehe","jingli") and (age<15 or age>30)的用户 **/ db.user.find({name:{$in:["haha","hehe","jingli"]},$or:[{age:{$lt:15}},{age:{$gt:30}}]})
3、使用正则表达式查询
/** 查询名字以h开头的用户 **/ db.user.find({name:/^h/})
4、使用$where来自定义JS的Function来匹配
/** 查询age>30 || age<10的用户 **/ db.user.find({$where:function(){return this.age>30 || this.age<10}})