目录

  • 0 环境
  • 1 要求
  • 2 实例
  • 2.1 准备工作
  • 2.1.1 新建集合及插入数据
  • 2.1.2 查询集合内的数据
  • 2.2 解决问题
  • 2.2.1 统计集合中共有多少个文档数据,并定义游标,打印出所有数据
  • 2.2.2 创建以gnumber正序排列的单字段索引
  • 2.2.3 创建以gnumber逆序(1,升序)排列,price正序(-1,降序)排列的复合索引
  • 2.2.4 查询价格大于5的商品数据
  • 2.2.5 查询quantity为10且价格大于等于5的商品数据
  • 2.2.6 查询quantity为10或价格小于等于10的商品数据
  • 2.2.7 查询pnumber为“p003”且quantity为10或价格大于等于5的商品数据
  • 2.2.8 查看在查询中所用到的索引情况



0 环境

OS:Windows10

MongoDB:MongoDB-3.4.4
网盘链接:https://pan.baidu.com/s/1tPUBNjlwqSdhCS89LpS6pQ
提取码:cwhk

可视化界面:mongodb-compass-1.28.4-win32-x64
网盘链接:https://pan.baidu.com/s/1GZA1Y66GnhtitF2OLzFkig
提取码:jz89

(以上软件均可从MongoDB官网免费下载使用)


1 要求

  1. 使用 find() 方法进行文档基本查询
  2. 文档查询条件的使用
  3. 针对特定类型的文档进行查询
  4. 索引操作

2 实例

每个文档对应订单中某个商品相关信息,包括:

  • gnumber:商品编号
  • quantity:商品数量
  • price:商品单价

插入并查询如下商品信息:

mongodb查找数据 mongodb查找文档_mongodb查找数据


2.1 准备工作

2.1.1 新建集合及插入数据

db.items_wjw.insert({gnumber:"P003",quantity:2,price:5})
db.items_wjw.insert({gnumber:"P002",quantity:2,price:8})
db.items_wjw.insert({gnumber:"P002",quantity:1,price:4})
db.items_wjw.insert({gnumber:"P001",quantity:10,price:4})
db.items_wjw.insert({gnumber:"P003",quantity:4,price:10})
db.items_wjw.insert({gnumber:"P001",quantity:10,price:20})
db.items_wjw.insert({gnumber:"P003",quantity:10,price:20})
db.items_wjw.insert({gnumber:"P002",quantity:5,price:10})

mongodb查找数据 mongodb查找文档_mongodb查找数据_02

2.1.2 查询集合内的数据

db.items_wjw.find().pretty()

mongodb查找数据 mongodb查找文档_数据_03


2.2 解决问题

2.2.1 统计集合中共有多少个文档数据,并定义游标,打印出所有数据

var cursor = db.items_wjw.find()	//定义游标
print(cursor)		//打印游标变量
print(cursor.size())	//输出集合中文档的个数

mongodb查找数据 mongodb查找文档_mongodb_04

while(cursor.hasNext()){
printjson(cursor.next())	//使用printjson输出结果数据集
}

mongodb查找数据 mongodb查找文档_mongodb查找数据_05

2.2.2 创建以gnumber正序排列的单字段索引

注:db.collection.createIndex(keys, options) //语法中 Key 值为你要创建的索引字段,1 为指定按升序(逆序)创建索引,如果你想按降序(正序)来创建索引指定为 -1 即可。

db.items_wjw.createIndex({gnumber:-1})

mongodb查找数据 mongodb查找文档_mongodb查找数据_06

查看集合索引

db.items_wjw.getIndexes()

mongodb查找数据 mongodb查找文档_mongodb查找数据_07

2.2.3 创建以gnumber逆序(1,升序)排列,price正序(-1,降序)排列的复合索引

db.items_wjw.createIndex({gnumber:1,price:-1})

mongodb查找数据 mongodb查找文档_数据库_08

查看集合索引

db.items_wjw.getIndexes()

mongodb查找数据 mongodb查找文档_nosql_09

2.2.4 查询价格大于5的商品数据

db.items_wjw.find({price:{$gt:5}}).pretty()

mongodb查找数据 mongodb查找文档_数据_10

2.2.5 查询quantity为10且价格大于等于5的商品数据

db.items_wjw.find({quantity:5,price:{$gte:5}}).pretty()

mongodb查找数据 mongodb查找文档_mongodb_11

2.2.6 查询quantity为10或价格小于等于10的商品数据

db.items_wjw.find({$or:[{quantity:10},{price:{$lte:10}}]}).pretty()

mongodb查找数据 mongodb查找文档_数据_12

2.2.7 查询pnumber为“p003”且quantity为10或价格大于等于5的商品数据

db.items_wjw.find({$or:[{pnumber:"P003",quantity:10},{price:{$gte:5}}]}).pretty()

mongodb查找数据 mongodb查找文档_mongodb查找数据_13

2.2.8 查看在查询中所用到的索引情况

注:在查询语句后加上explain()方法即可查看在此查询中所用到的索引情况。

db.items_wjw.find({$or:[{pnumber:"P003",quantity:10},{price:{$gte:5}}]}).explain()

mongodb查找数据 mongodb查找文档_mongodb查找数据_14


总结:本文介绍了MongoDB数据库中的文档查询操作!

  1. 使用 find() 方法进行文档基本查询;
  2. 文档查询条件的使用;
  3. 针对特定类型的文档进行查询;
  4. 索引操作。