mongodb数据结构学习1--增删改查

本文涉及的产品
云数据库 MongoDB,通用型 2核4GB
简介: 插入文档 在数据库中,数据插入是最基本的操作,在MongoDB使用db.collection.insert(document)语句来插入文档; document是文档数据,collection是存放文档数据的集合。

插入文档

在数据库中,数据插入是最基本的操作,在MongoDB使用db.collection.insert(document)语句来插入文档;

document是文档数据,collection是存放文档数据的集合。

例如:所有用户的信息存放在users集合中,每个用户的信息为一个user文档,插入数据:

db.users.insert(user);

  如果collection存在,document会添加到collection目录下, 如果collection不存在,数据库会先创建collection,然后再保存document

批量插入文档

insert语句不但可以插入单个文档,还可以一次性插入多个文档。

插入多个文档时,insert命令的参数为一个数组,数组元素为BSON格式的文档。

多个文档可以放在一个数组内,一次插入多条数据,例如:

db.users.insert([{name:"tommy"},{name:"xiaoming"}])

  文档批量插入非常方便,但是使用批量插入时也有一些问题需要注意,因为BSON格式的限制,一次插入的数据量不能超过16M,在一个insert命令中插入多条数据时,MongoDB不保证完全成功或完全失败。

查询文档

在MongoDB中,查询指向特定的文档集合,查询设定条件,指明MongoDB需要返回的文档;查询也可以包含一个投影,指定返回的字段。

如下图,在查询过程指定了一个查询条件和一个排序修饰。

在关系型数据库中,投影指的是对列的筛选,类似的,在MongoDB中,投影指的是对出现在结果集中的对象属性的筛选。

文档查询 - find方法

MongoDB中查询检索数据时使用find命令,使用方法如下:

  • 语法:
db.collection.find(criteria,projection);
  • 参数:

    criteria – 查询条件,文档类型,可选。

    projection– 返回的字段,文档类型,可选,若需返回所有字段,则忽略此参数。

find命令两个可选参数,criteria为查询条件,projection为返回的字段,如果不传入条件数据库会返回该集合的所有文档。

修改文档--update命令

update命令可以更新指定文档的特定字段值,也可以替换整个文档,如果更新操作会增加文档大小,MongoDB将重新分配空间并重新定位。

  • 语法:
db.collection.update(query,update,{upsert:boolean,multi:boolean});
  • 参数:

    query:查询条件,文档,和find中的查询条件写法一致。

    update:修改内容,文档。

    upsert(可选):如果值为true,那么当集合中没有匹配文档时,创建文档。默认false。

    multi(可选):如果值为true,那么将更新全部符合条件的文档,否则仅更新一个文档,默认false。

  • 如下示例:将users集合中所有符合条件"age>18"文档的status字段更新为"A"。

修改文档--save命令

save命令可以更新或插入一个新文档,与update命令不同的是,save只能对一个文档进行操作。

  • 语法:
db.collection.save();
  • 参数:

    document:新的文档;

删除文档--remove命令

需要删除文档时使用remove命令,删除文档可以清理掉不需要的数据,释放存储空间,提升检索效率,但是错误的删除会是一场灾难,因此在执行数据删除操作时需要非常的谨慎!

  • 语法:

     

    1. db.collection.remove(
    2. query,
    3. justOne
    4. )

     

  • 参数:

    query:BSON类型,删除文档的条件。

    justOne:布尔类型,true:只删除一个文档,false:默认值,删除所有符合条件的文档。

下面是一个是将users集合中所有status="D"的文档删除操作,对比一下MongoDB和传统SQL数据库删除的操作,看看有哪些不同之处。

  与传统SQL比较 - 删除文档

  • MongoDB

  • 传统SQL

 

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
目录
相关文章
|
22天前
|
存储 NoSQL MongoDB
【MongoDB】MongoDB 如何处理复杂的数据结构?
【4月更文挑战第2天】【MongoDB】MongoDB 如何处理复杂的数据结构?
|
2月前
|
存储 Java API
JAVA零基础小白学习免费教程day13-Collection&数据结构
JAVA零基础小白学习免费教程day13-Collection&数据结构
84 0
|
8天前
|
Python
python学习-函数模块,数据结构,字符串和列表(下)
python学习-函数模块,数据结构,字符串和列表
49 0
|
1月前
|
存储 C语言
【数据结构】顺序表的学习
【数据结构】顺序表的学习
|
1月前
|
算法 Java 索引
【数据结构与算法】4、双向链表(学习 jdk 的 LinkedList 部分源码)
【数据结构与算法】4、双向链表(学习 jdk 的 LinkedList 部分源码)
31 0
|
1月前
|
存储 算法 Java
【数据结构与算法】1、学习动态数组数据结构(基本模拟实现 Java 的 ArrayList 实现增删改查)
【数据结构与算法】1、学习动态数组数据结构(基本模拟实现 Java 的 ArrayList 实现增删改查)
45 0
|
1月前
|
算法
【数据结构】复杂度学习
【数据结构】复杂度学习
|
2月前
|
存储 NoSQL 算法
学习 Redis 基础数据结构,不讲虚的。
职场中是这样使用 redis 的。
151 1
学习 Redis 基础数据结构,不讲虚的。
|
3月前
|
存储 NoSQL MongoDB
学习如何使用 Python 连接 MongoDB: PyMongo 安装和基础操作教程
Python 需要一个 MongoDB 驱动程序来访问 MongoDB 数据库。我将使用 MongoDB 驱动程序 PyMongo 建议您使用 PIP 来安装 PyMongo。PIP 很可能已经安装在您的 Python 环境中。将命令行导航到 PIP 的位置,然后键入以下内容:
93 1
|
3月前
|
网络协议
Reactor学习,从数据结构,内存分配,概念上分析
Reactor学习,从数据结构,内存分配,概念上分析
38 0