一、Compass(图形化工具)查询文档
1. 查询集合全部文档
- 在左侧导航栏,选中数据库下的集合(collection)(示例:
grade集合) Filter(筛选输入框)填写空对象{}- 点击按钮
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)
- 查询集合所有文档:过滤条件传空对象
{},可以省略
// 查询 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)
- 条件查询,匹配字段值 查询
age值为"2"的文档:
db.grade.find({age:"2"})
Code language: CSS (css)
返回结果:
{ "_id" : ObjectId("5c2cc606e709f04398c4e3db"), "name" : "二年级", "age" : "2" }
Code language: JSON / JSON with Comments (json)
补充
.findOne():只返回第一条匹配文档,不是数组光标
db.grade.findOne({age:"2"})
Code language: CSS (css)
- 投影(只返回指定字段,
1显示,0不显示)
//只显示 name、age字段,隐藏 _id
db.grade.find({age:"2"},{_id:0,name:1,age:1})
Code language: JavaScript (javascript)
- 比较运算符(大于、小于)
// age 大于 1
db.grade.find({age:{$gt:1}})
Code language: PHP (php)
对比
| Compass图形界面 | Mongo Shell命令 |
|---|---|
Filter输入框填写{} + Find | db.grade.find() |
Filter输入框填写{"age":"2"} + Find | db.grade.find({age:"2"}) |
Compass执行Find后,可以把界面上的查询直接导出为Mongo shell代码,方便复制到命令行运行。
Previous: 安装和使用MongoDB Compass
Next: 删除数据库或者集合