MongoDB常用条件查询

  • 查询集合中的所有数据
  • 大小判断查询
  • 逻辑条件查询
  • 其他查询
  • 对数组的查询
  • 查询指定数组长度
  • 查询数组里某一个值
  • 指定查询数量
  • 跳跃查询
  • 对查询结果进行排序
  • 使用正则表达式查询


find() 函数的查询结果有两种显示方式

一种是不使用局部变量接受,直接像本篇这样

这种查询方法默认显示20条数据

另一种是使用一个局部变量接受查询结果

这个局部变量就是所谓的“游标”,需要我们手动的去迭代游标

查询集合中的所有数据

// 本片使用的集合数据
{ "_id" : ObjectId("5f3e75c6d59f93d84c24dd37"), "name" : "可比克", "price" : 12 }
{ "_id" : ObjectId("5f3e75c6d59f93d84c24dd38"), "name" : "呀土豆", "price" : 15 }
{ "_id" : ObjectId("5f3e75c6d59f93d84c24dd39"), "name" : "炸薯条", "price" : 18 }
{ "_id" : ObjectId("5f3e75c6d59f93d84c24dd3a"), "name" : "原味薯条", "price" : 20 }
{ "_id" : ObjectId("5f3e7636d59f93d84c24dd3b"), "name" : "土豆条", "price" : 18 }
{ "_id" : ObjectId("5f3e767ad59f93d84c24dd3c"), "name" : "爱你薯条", "price" : 18, "sort" : [ "原味", "麻辣", "酸爽", "五香" ] }
db.goods.find()

goods 是一个数据库中的一个集合,相当于myslq数据库中的一张表

java mongo 多个查询条件 mongodb 根据条件查询数量_3d

为了将查询结果更优雅得显示,可以使用 pretty() 对查询结果进行格式化

db.goods.find().pretty()

java mongo 多个查询条件 mongodb 根据条件查询数量_mongodb_02

大小判断查询

  • 等于
// 查询价格等于18的商品
db.goods.find({price:18})
  • 不等于 $ne (not equal)
// 查询价格不等于18的商品
db.goods.find({price:{$ne:18}})
  • 大于 $gt (greater than)
// 查询价格大于18的商品
db.goods.find({price:{$gt:18})
  • 大于等于 $gte (greater than and equal)
// 查询价格大于等于18的商品
db.goods.find({price:{$gte:18}})
  • 小于 $lt (less than)
// 查询价格小于18的商品
db.goods.find({price:{$lt:18}})
  • 小于等于 $lte (less than and equal)
// 查询价格小于等于18的商品
db.goods.find({price:{$lte:18}})

逻辑条件查询

  • and 多条件同时满足,不同条件之间使用英文逗号隔开即可
// 查询name为“炸薯条” 并且 price 为18的商品
db.goods.find({name:'炸薯条',price:18}).pretty()

java mongo 多个查询条件 mongodb 根据条件查询数量_mongodb_03

  • or 多条件满足之一即可
    $or 接收一个数组,数组中是多个文档,每个文档就是一个条件,只要满足数组中任何一个条件即可查询到
// 查询 name 为“炸薯条” 或者 价格为18的商品
db.goods.find({$or:[{name:'炸薯条'},{price:18}]}).pretty()

java mongo 多个查询条件 mongodb 根据条件查询数量_3d_04

其他查询

对数组的查询

查询指定数组长度

// 查询数组长度为4的文档
db.goods.find({sort:{$size:4}})

java mongo 多个查询条件 mongodb 根据条件查询数量_3d_05

$size 接收一个整数,表示长度等于多少

查询数组里某一个值

// 查询数组 sort 中含有 “五香” 的文档
db.goods.find({sort:'五香'}).pretty()

java mongo 多个查询条件 mongodb 根据条件查询数量_mongodb_06

指定查询数量

limit(x) 指定返回 x 条数据

如果查询到的结果数量大于 x ,只显示前 x 条数据

否则显示查询到的所有数据

db.goods.find({price:{$gt:15}}).limit(3)

java mongo 多个查询条件 mongodb 根据条件查询数量_mongodb_07

跳跃查询

find() 函数会对查询结果进行排序,默认从第一个开始显示

skip(x) 跳过查询结果的前 x 条,从 x+1 条数据开始显示

// 遍历集合,从集合的第四条数据开始显示
db.goods.find().skip(3)

// 查询 name 为“炸薯条”,或者价格等于18的商品,从查询结果的第二条数据开始显示
db.goods.find({$or:[{name:'炸薯条'},{price:18}]}).pretty().skip(1)

java mongo 多个查询条件 mongodb 根据条件查询数量_3d_08

对查询结果进行排序

sort({指定的列 : number})

按照指定的列进行排序

number 为 1 代表升序,-1代表降序

// 查询价格大于等于15的商品,升序排列
db.goods.find({price:{$gte:15}}).sort({price:1}).pretty()

java mongo 多个查询条件 mongodb 根据条件查询数量_d3_09

// 查询价格大于等于15的商品,降序排列
db.goods.find({price:{$gte:15}}).sort({price:-1}).pretty()

java mongo 多个查询条件 mongodb 根据条件查询数量_d3_10

使用正则表达式查询

MongoDB支持的正则表达式与 js 中相同

正则表达式使用 $regex

// 查询name中含有“薯条”的商品
db.goods.find({name:{$regex:"薯条"}}).pretty()

java mongo 多个查询条件 mongodb 根据条件查询数量_数组_11