---
title: 2.1、数据查询
date: 2017-12-15 18:42:37
tags: 
  - 数据库
  - MongoDB
categories: 
  - MongoDB
---

#### `db.集合名称.find([查询条件],[查询的字段])`
+ 查询条件是JSON格式的数据
省略表示查询该集合当中的全部数据
+ 查询的字段也是用JSON格式表示 ,字段值是非零表示包含该字段 , 0则表示排除该字段 ( 但两种方式不能同时用 )
<!-- more -->
比如 {x : 1} 表示只查询主键_id和字段x的内容
主键\_id是默认被包含的 , 如果要排除可以写 { \_id : 0 }
> `db.集合名称.findOne()` 表示只返回查询结果的第一条数据
#### 模糊查询条件
直接使用普通的json是作为精确条件
也可以使用某个范围作为模糊条件
例如
`{age:{$gt:22}}`
是查找age字段大于22的数据
( 也可以应用于字符串 )

|操作符| 含义|
|---|----|
|$gt|大于|
|$lt|小于|
|$gte|大于等于|
|$lte|小于等于|

字符串的模糊匹配使用类似JavaScript当中正则表达式的方式
比如`/mongodb/`表示包含"mongodb"子串
相当于 `...where xx like '%mongodb%'`
`/^mongodb/`表示以"mongodb"开头
#### 逻辑运算符
+ **逻辑与 $and: **一个json中写的多个键值对本身就表示and
也可以用`{$and:[{a:1},{b:2}]}`表示`... where a=1 and b=2`
+ **逻辑或 $or: ** `{$or:[{a:1},{b:2}]}`
表示 `... where a=1 or b=2`
+ **某个字段 存在/不存在 $exists : **`{a:{$exists:true}}`表示存在a字段的数据 
#### 对查询结果的处理
以下都是在`db.集合名称.find(查询条件)`获得的查询结果的基础上执行的函数

**结果计数**
`.count()`
对查询结果执行count函数 , 可以统计查询结果的数量

**分页查询**
`.skip(num).limit(num)`
skip表示跳过前面的若干条数据 , limit是返回数据的最大数量

**结果排序**
`.sort(排序条件)`
排序条件是json的形式 { 字段名 : 1 } 或者  { 字段名 : -1 } 
前者表示升序 , 后者表示降序 , 不能用其他的数字