如果要查询name字段中以“白”开头的,代码如下:
4.2 Null值处理
如果我们想找出集合中某字段值为空的文档,如何查询呢?其实和我们之前的条件查询是一样的,条件值写为null就可以了。
我们现在集合中的文档都是没有空值的,为了方便测试,现在我们将数据做些修改: 将“唐僧”的address改为空
再次查询:
我们会发现不仅会显示“唐僧”这条文档,之前因为修改导致address字段丢失的那条记录也出现了。也就是说,这种查询会查询出该字段为null的以及不存在该字段的文档记录。
4.3大于小于
<, <=, >, >= 这个操作符也是很常用的,格式如下
db.collection.find({ \大于: field > value db.collection.find({ \小于: field < value
db.collection.find({ \大于等于: field >= value db.collection.find({ \小于等于: field <= value
示例:查询年龄大于等于20岁的学员记录
4.4不等于
不等于使用$ne操作符。
示例:查询sex字段不为“男”的文档
4.5判断字段是否存在
判断字段是否存在使用$exists操作符。 示例:查询所有含有address字符的文档。
示例:查询所有不含有address字符的文档。
4.6包含与不包含
包含使用$in操作符。
示例:查询student集合中age字段包含20,25,30的文档
示例:查询student集合中age字段不包含20,25,30的文档
4.7统计记录条数
统计记录条件使用count()方法。 示例:查询student集合的文档条数。
示例:查询student集合中age字段小于等于20的文档条数。
4.8 条件连接--并且
我们如果需要查询同时满足两个以上条件,需要使用$and操作符将条件进行关联。(相当于SQL的and)
格式为:$and:[ { },{ },{ } ]
示例:查询student集合中age大于等于20 并且age小于30的文档
4.9 条件连接--或者
如果两个以上条件之间是或者的关系,我们使用$or操作符进行关联,与前面$and的使用方式相同
格式为:$or:[ { },{ },{ } ]
示例:查询student集合中sex为女,或者年龄小于20的文档记录
5.java连接MongoDB
5.1查询文档
5.1.1查询全部记录
(1)创建maven工程mongoDBDemo ,引入依赖。
5.1.2匹配查询
MongoDB使用BasicDBObject类型封装查询条件,构造方法的参数为key 和value .
示例:查询student集合中name为猪八戒的文档 //构建查询条件 BasicDBObject bson=new BasicDBObject(\, \猪八戒\); //....遍历集合 FindIterable
5.1.3模糊查询
构建模糊查询条件是通过正则表达式的方式来实现的
(1)完全匹配Pattern pattern = Pattern.compile(\(2)右匹配Pattern pattern = Pattern.compile(\(3)左匹配Pattern pattern = Pattern.compile(\(4)模糊匹配Pattern pattern = Pattern.compile(\示例:模糊查询student集合中address 中含有洞的文档记录
//模糊查询:like %洞% Pattern queryPattern = Pattern.compile(\洞.*$\); BasicDBObject bson=new BasicDBObject(\, queryPattern); FindIterable
在MongoDB提示符下条件json字符串为{ age: { $lt :20 } } ,对应的java代码也是BasicDBObject 的嵌套。
示例:查询student集合中age小于20的文档记录 //查询年龄小于20的 BasicDBObject bson=new BasicDBObject(\, new BasicDBObject(\,20)); FindIterable
示例:查询年龄大于等于20并且小于30的文档记录 //查询年龄大于等于20的 //查询年龄小于30的 BasicDBObject bson2=new BasicDBObject(\, new BasicDBObject(\,30)); //构建查询条件and BasicDBObject bson=new BasicDBObject(\, Arrays.asList(bson1,bson2) ); BasicDBObject bson1=new BasicDBObject(\, new BasicDBObject(\,20)); 5.1.6条件连接--或者
示例:查询年龄小于等于20或者性别为女的文档记录 BasicDBObject bson1=new BasicDBObject(\, new BasicDBObject(\,20)); BasicDBObject bson2=new BasicDBObject(\, \女\); //构建查询条件or BasicDBObject bson=new BasicDBObject(\, Arrays.asList( bson1, bson2 ) );