MongoDB【CRUD基本操作】

本文涉及的产品
云数据库 MongoDB,通用型 2核4GB
简介: MongoDB【CRUD基本操作】

简介

       MongoDB是为快速开发互联网Web应用而设计的数据库系统。它是面向文档的,这里的文档是一种类似于JSON的结构,简单理解MongoDB这个数据库就是存储各种JSON的(其实是BSON,一种二进制的JSON结构)。

三个概念

数据库(database)

数据库是一个仓库,在仓库中可以存放集合。

集合(collection)

集合中可以存放文档。

文档(document)

文档是数据库最小的单位,我们存储和操作的内容都是文档。

MongDB的基本操作

查看所有数据库

show dbs
show databases

进入指定数据库

   语法和 MySQL 一样,但是在MongDB中,数据库和集合都不需要手动创建,当我们在创建文档的时候,如果文档所在的集合和数据库不存在会自动创建数据库和集合。

use 数据库名

比如,我们没有 test 数据库,那么我直接来一句 'use test' 也没有问题,直到我们向test数据库真正的插入数据才会创建这个数据库。

显示当前数据库名

db

显示当前数据库所有集合

show collections

数据库的CRUD(增删改查)

插入文档

db.<collection>.insertOne(doc)
db.<collection>.insertMany(doc)

例:向 test 数据库中的 students 集合插入一个新的学生对象


doc:

{name:"燕双鹰",age:18,gender:"男"}
use test;
// db代表的是当前数据库,插入数据前我们必须先进入该数据库
db.students.insertOne(
    {name: "燕双鹰",age: 18,gender: "男"}
);
db.students.insertMany([
    {name: "李大喜",age: 16,gender: "男"},
    {name: "李元芳",age: 20,gender: "男"},
    {name: "石敢当",age: 99,gender: "男"}
]);

        当我们向集合中插入文档时,如果没有给文档指定 _id 的属性,则数据库会自动给文档添加_id。这个属性用来作为我们这个文档的唯一标识。这个 _id 是根据时间戳生成的,所以永远不会重复。


       这个 _id 我们也可以自己指定,但必须确保 _id 唯一。

删除文档

语法:

deleteOne()
deleteMany()

例子:

// 删除name="李大喜"的文档
db.students.deleteOne(
    {name: "李大喜"}
);
//删除所有gender="男"的文档
db.students.deleteOne(
    {gender: "男"}
);

修改文档

语法: update 已经不推荐使用了,我们尽量使用 updateOne 和 updateMany。

// update 默认效果等同于 updateOne 只会对查询到的第一个文档进行修改
db.<collection>.update(查询条件,新对象)
db.<collection>.updateOne(查询条件,新对象)
db.<collection>.updateMany(查询条件,新对象)

注意:update 默认会使用新对象替换旧对象。

例:

修改一个文档:
// 修改name=石敢当的文档为 新的文档
db.students.updateOne(
    {name: "石敢当"},
    {
        $set: {name: "狄如燕",age: 20,gender: "女"}
    }
);

修改所有匹配的文档:

// 把所有name字段=石敢当的文档替换为 新文档
db.students.updateMany(
    {name: "石敢当"},
    {
        $set: {name: "狄如燕",age: 20,gender: "女"}
    }
);

删除文档字段:

// 先增加文档 狄仁杰信息 多加一个字段 "address" 
db.students.insertOne(
    {name: "狄仁杰",age: 50,gender: "男",addess: "山西太原"}
);
// 删除字段 "address" 后面的值可以随便填 因为它只要匹配到 address 这个字段就会直接删除
db.students.updateOne(
    {name: "狄仁杰"},
    {
        $unset: {addess: 404}
    }
);
删除集合:
db.<collection>.drop();
删除数据库:

集合中集合没了数据库也没了,所以只要删除数据库中所有集合,数据库也就没了。

        除此之外,我们真正开发中一般不会删除数据,比如一些违规言论数据,不可能用户撤回删除我们公司也删除,因为数据是最有价值的东西,我们可能还要拿去分析处理,不可能用户删就删,我们通常对用户想要删除的数据做一个标记只展示给用户:比如下面删除李元芳。

// 给所有文档添加一个字段 isDel 时候被删除 删除-1 未删除-0
db.students.updateMany(
    {$or:[
        {gender: "男"},
        {gender: "女"}
    ]},
    {$set:
       {isDel: 0}
    }
);
// 设置李元芳被删除
db.students.updateOne(
    {name: "李元芳"},
    {
        $set: {isDel: 1}
    }
);
// 查询所有未被删除的人
db.students.find({isDel: 0});

       学到这,我深刻感受到网络不是法外之地,一定不能在网络上信口开河,尤其是键盘侠们,国家应该利用好计算机技术,管制一下网络键盘侠们。

查询文档

如果想检索集合中的所有文档,可以在find方法中传一个空文档作为查询过滤条件。查询过滤参数确定选择条件:

// find(条件)用来查询集合中所有满足条件的文档
// {} 表示查询集合中所有文档
db.<collection>.find( {} )
等值查询

语法:

db.<collection>.find({属性:值})

案例:

// 等值查询 查询name为"李大喜"的文档
db.students.find({name: "李大喜"});

多条件查询(AND):

// 查询name为李元芳 age为20的文档
db.students.find({name: "李元芳",age: 20});
// 查询gender为男 age < 50 的文档
db.students.find({gender: "男",age: {$lt: 50}});

OR:

// 查询年龄 <= 19 或者 > 50的人
db.students.find({ $or: [
    {age: {$lte: 19}},
    {age: {$lte: 50}}
]});

AND 和 OR 复用:

// 查询性别为男 并且 年龄<=19或者>=50
db.students.find({
    gender: "男",
    $or: [
    {age: {$lte: 19}},
    {age: {$lte: 50}}
]});

findOne:

// 查询符合条件的第一个文档
db.students.findOne({gender: "男"});

查询结果的数量:

// 查询所有记录的数量
db.students.find().count;


相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。 &nbsp; 相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
7月前
|
JSON NoSQL MongoDB
mongodb基本操作,增删改查,查询,索引,权限机制
mongodb基本操作,增删改查,查询,索引,权限机制
|
4月前
|
NoSQL Java 关系型数据库
让 MongoDB 的 CRUD 有 JPA 的味道
让 MongoDB 的 CRUD 有 JPA 的味道
20 0
|
4月前
|
NoSQL 关系型数据库 MySQL
使用 MongoTemplate 对 MongoDB 进行 CRUD
使用 MongoTemplate 对 MongoDB 进行 CRUD
45 0
|
4月前
|
NoSQL JavaScript 前端开发
MongoDB【CRUD练习-条件查询-文档关系】
MongoDB【CRUD练习-条件查询-文档关系】
|
5月前
|
存储 JSON NoSQL
02 MongoDB - 基本操作
02 MongoDB - 基本操作
13 0
|
7月前
|
SQL NoSQL MongoDB
MongoDB 操作(CRUD) 教程—官方原版
MongoDB 操作(CRUD) 教程—官方原版
113 0
|
9月前
|
存储 SQL JSON
三.MongoDB入门-Mongodb的CRUD
MongoDB入门-Mongodb的CRUD
|
10月前
|
NoSQL 关系型数据库 MySQL
MongoDB 基本操作 增删改查
MongoDB 基本操作 增删改查
185 0
|
存储 NoSQL 安全
MongoDB基本操作(五)——分片集群与安全认证
MongoDB基本操作(五)——分片集群与安全认证
390 0
MongoDB基本操作(五)——分片集群与安全认证
|
NoSQL 安全 MongoDB
MongoDB基本操作(四)——集群与安全
MongoDB基本操作(四)——集群与安全
117 0