MongoDB入门系列(三) ===> 基本操作:增删改查

本文是MongoDB入门系列的第三篇,主要介绍了MongoDB的基本操作,包括创建和删除数据库、集合,插入、查询、更新和删除文档。详细讲解了投影、查询运算符、数组查询、正则匹配、排序、限制及聚合操作,如$lookup、$unwind等,是MongoDB初学者的实用教程。
摘要由CSDN通过智能技术生成

全系列目录

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})
// 返回结果同上

注:

  1. projection参数key: value里面的value, 也可以传1或者0, 1表示true, 0表示false
  2. 除非显示指定"_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

  1. $in 只要包含了值就匹配成功
    例:
// 我们先插入两条数据
> db.gkd.insert({b: [1]})
> db.gkd.insert({b: [1, 2, 3]})


> db.gkd.find({b: {$in: [1,2]}})
{ "_id" : ObjectId(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值