使用Compass查询和mongoshell来查询

一、Compass(图形化工具)查询文档

1. 查询集合全部文档

  1. 在左侧导航栏,选中数据库下的集合(collection)(示例:grade集合)
  2. Filter(筛选输入框)填写空对象 {}
  3. 点击按钮 Find,就会返回集合里面全部文档。不填筛选条件直接滚动页面,Compass 默认也是查询全部文档。

2. 条件过滤查询(按字段匹配)

示例:查询 age 字段等于字符串 "2" 的文档

  • Filter筛选框输入:
{"age":"2"}
Code language: JSON / JSON with Comments (json)
  • 点击Find执行查询,返回匹配的那条文档:
{
  "_id" : ObjectId("5c2cc606e709f04398c4e3db"),
  "name" : "二年级",
  "age" : "2"
}
Code language: JSON / JSON with Comments (json)

注意:MongoDB区分字符串和数字"age":"2"(字符串)和 age:2(数字)是不一样的条件。


二、Mongo Shell(命令行)查询语法

语法格式

db.集合名.find(查询过滤条件)
Code language: CSS (css)
  1. 查询集合所有文档:过滤条件传空对象 {},可以省略
// 查询 grade 集合全部文档,两种写法等价
db.grade.find()
db.grade.find({})
Code language: JavaScript (javascript)

输出示例:

{ "_id" : ObjectId("5c2cc5e8e709f04398c4e3da"), "name" : "一年级", "code" : "1" }
{ "_id" : ObjectId("5c2cc606e709f04398c4e3db"), "name" : "二年级", "age" : "2" }
{ "_id" : ObjectId("5c2cc703e709f04398c4e3dc"), "title" : "hahah" }
Code language: JSON / JSON with Comments (json)
  1. 条件查询,匹配字段值 查询 age 值为 "2" 的文档:
db.grade.find({age:"2"})
Code language: CSS (css)

返回结果:

{ "_id" : ObjectId("5c2cc606e709f04398c4e3db"), "name" : "二年级", "age" : "2" }
Code language: JSON / JSON with Comments (json)

补充

  1. .findOne():只返回第一条匹配文档,不是数组光标
db.grade.findOne({age:"2"})
Code language: CSS (css)
  1. 投影(只返回指定字段,1显示,0不显示)
//只显示 name、age字段,隐藏 _id
db.grade.find({age:"2"},{_id:0,name:1,age:1})
Code language: JavaScript (javascript)
  1. 比较运算符(大于、小于)
// age 大于 1
db.grade.find({age:{$gt:1}})
Code language: PHP (php)

对比

Compass图形界面Mongo Shell命令
Filter输入框填写{} + Finddb.grade.find()
Filter输入框填写{"age":"2"} + Finddb.grade.find({age:"2"})

Compass执行Find后,可以把界面上的查询直接导出为Mongo shell代码,方便复制到命令行运行。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注