全系列目录
- MongoDB入门系列(一) ===> 概念解析 https://blog.csdn.net/c_kite/article/details/85777134
- MongoDB入门系列(二) ===> 创建用户 https://blog.csdn.net/c_kite/article/details/85845983
- MongoDB入门系列(三) ===> 基本操作:增删改查 https://blog.csdn.net/c_kite/article/details/85853719
- MongoDB入门系列(四) ===> 应用补充 https://blog.csdn.net/c_kite/article/details/86361302
1. 数据库
1.1 创建数据库
语法: use DATABASE_NAME
> use gkd
switched to db gkd
但如果不插入数据, 数据库是显示不出来的.
db.集合名(表名).insert({key: value})
1.2 删除数据库
> use 数据库名
> db.dropDatabase()
2. 集合(表)
2.1 创建集合
语法:
db.createCollection(name 集合名, options 可选参数)
options可选参数表格
字段 | 类型 | 描述 |
---|---|---|
capped | 布尔 (可选) | 如果为 true,则创建固定集合。固定集合是指有着固定大小的集合,当达到最大值时,它会自动覆盖最早的文档。当该值为 true 时,必须指定 size 参数。 |
size | 数值 (可选) | 为固定集合指定一个最大值(以字节计)。如果 capped 为 true,也需要指定该字段。 |
max | 数值 (可选) | 指定固定集合中包含文档的最大数量。 |
详细参数列表请参考 https://docs.mongodb.com/manual/reference/method/db.createCollection/index.html
// 例1
db.createCollection("gkd", { capped : true, size : 1024 } )
但如果没有特殊要求, 没有必要主动输入命令创建集合(表). 在我们插入数据的时候如果系统没有检测到表, 则会自动创建.
// 例2
// 创建gkd表, 插入数据
db.gkd.insert({"name" : "菜鸟教程"})
// 查看集合
show collections
2.2 删除集合
// 删除集合
db.集合名.drop()
删除成功返回true
3. 文档(row)
3.1 插入文档
// 提到过还几次了
db.集合名.insert();
如果想一次插入多条数据, 例
db.集合名.insert([{key: value}, {key, value}])
3.2 查询文档
命令:
db.集合名.find(query, projection)
参数 | 类型 | 描述 |
---|---|---|
query | document | 可选, 查询条件, 如果要查询全部数据, 可忽略该参数或传递{} (空文档) |
projection | document | 可选, 指定要在与query匹配的文档中返回的字段(类似select). 如果要查询全部数据, 可忽略该参数 |
3.2.1 projection介绍
这个参数差不多相当于mysql里的select, 下面是一个例子
// 插入一条文档
> db.gkd.insert({a: 1, b: 2})
// 查询全部文档
> db.gkd.find()
{ "_id" : ObjectId("5c318021a92a4958ddb16ae4"), "a" : 1, "b" : 2 }
// 选择特定参数查询
> db.gkd.find({}, {a: true})
{ "_id" : ObjectId("5c318021a92a4958ddb16ae4"), "a" : 1 }
// 也可以采用链式调用
> db.gkd.find().projection({a: true})
// 返回结果同上
注:
- projection参数
key: value
里面的value
, 也可以传1或者0, 1表示true, 0表示false - 除非显示指定
"_id": false
, 否则它默认返回
3.2.2 查询运算符介绍
如果我们想要查一个值是否符合某个条件的时候, 就需要用到查询运算符. 例:
// 先插入3条数据, 接下来我想找到a大于等于2
db.gkd.insert([{a: 1}, {a: 2}, {a: 3}]);
// 可以看到a的值为一个对象, $gte代表大于等于
db.gkd.find({a: {$gte: 2}})
// 组合筛选, 如果我想要匹配大于1小于3
db.gkd.find({a: {$gt: 1, $lt: 3}})
3.2.2.1 运算符
名字 | 描述 |
---|---|
$eq | 等于 |
$gt | 大于 |
$gte | 大于等于 |
$in | 匹配数组中指定的任何值 |
$lt | 小于 |
$lte | 小于等于 |
$ne | 匹配不等于指定值的值 |
$nin | 匹配不存在数组中指定的任何值. |
$exists | 匹配具有指定字段的文档(row) |
$type | 匹配字段是指定类型的文档(row) |
还有很多运算符不一一介绍, 只挑选了一些常用的列了出来, 详细请参看官方文档:
https://docs.mongodb.com/manual/reference/operator/query/#query-selectors
3.2.3 查询数组
有3个运算符需要介绍一下, 分别是$in. $all. $size
$in
只要包含了值就匹配成功
例:
// 我们先插入两条数据
> db.gkd.insert({b: [1]})
> db.gkd.insert({b: [1, 2, 3]})
> db.gkd.find({b: {$in: [1,2]}})
{ "_id" : ObjectId(