mongodb数据结构学习1--增删改查
插入文档
在数据库中,数据插入是最基本的操作,在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命令,删除文档可以清理掉不需要的数据,释放存储空间,提升检索效率,但是错误的删除会是一场灾难,因此在执行数据删除操作时需要非常的谨慎!
- 语法:
- db.collection.remove(
- query,
- justOne
- )
- 参数:
query:BSON类型,删除文档的条件。
justOne:布尔类型,true:只删除一个文档,false:默认值,删除所有符合条件的文档。
下面是一个是将users集合中所有status="D"的文档删除操作,对比一下MongoDB和传统SQL数据库删除的操作,看看有哪些不同之处。
与传统SQL比较 - 删除文档
- MongoDB

- 传统SQL

mongodb数据结构学习1--增删改查的更多相关文章
- 十四:SpringBoot-配置MongoDB数据库,实现增删改查逻辑
SpringBoot-配置MongoDB数据库,实现增删改查逻辑 1.MongoDB数据库 1.1 MongoDB简介 1.2 MongoDB特点 2.SpringBoot整合MongoDB 2.1 ...
- mongodb的安装与增删改查
mongodb是一款分布式的文件存储的数据库,注意这两个词,分布式和文件存储.mongodb支持复制和分片,可以合理的运用空间的大小,也可以达到容灾的目的.另外文件存储也是一个特点,抛弃了传统的表的概 ...
- mongoDB (mongoose、增删改查、聚合、索引、连接、备份与恢复、监控等等)
MongoDB - 简介 官网:https://www.mongodb.com/ MongoDB 是一个基于分布式文件存储的数据库,由 C++ 语言编写,旨在为 WEB 应用提供可扩展的高性能数据存储 ...
- MongoDB的基本操作(增删改查)
目录 概念整理 数据库:一个MongoDB中可以建立多个数据库. 集合:MongoDB的文档组. 文档:实际存放数据的地方. 常见的操作 数据库(新增,删除) 集合(新增,编辑,删除) 文档(增删 ...
- JDBC学习笔记——增删改查
1.数据库准备 要用JDBC操作数据库,第一步当然是建立数据表: ? 1 2 3 4 5 6 CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_I ...
- jdbc编程学习之增删改查(2)
一,enum类型的使用 在SQL中没有布尔类型的数据,我们都使用过布尔类型,当属性的值只用两种情况时.例如性别等.那在数据库对这些属性的值个数比较少时我们应该使用什么数据类型呢?SQL给我们提供了枚举 ...
- MongoDB学习之--增删改查(1)
本文是对mongodb学习的一点笔记,主要介绍最简单的增删改操作,初学,看着API,有什么错误,希望大家指正:(使用官方驱动) 1.增 增加操作是最简单的,构造bsonDcument插入即可: 方式1 ...
- MongoDB学习之--增删改查(2)
昨天简单介绍了官方驱动操作MongoDB进行增删查操作的,今天继续介绍更新操作..... 方法简介 官方驱动中更新操作使用collection的Update方法,有泛型和非泛型两个版本: 其签名如下( ...
- mongodb实现简单的增删改查
package mongoDB; import java.net.UnknownHostException; import java.util.ArrayList; import java.util. ...
- mongodb对数据的增删改查
数据类型 下表为MongoDB中常用的几种数据类型: Object ID:文档ID String:字符串,最常用,必须是有效的UTF-8 Boolean:存储一个布尔值,true或false Inte ...
随机推荐
- 新建maven项目
1.新建maven project 注意:勾上create a new simple project 2.填写相关信息, Grounp id为大项目名字,Artifact id为小项目的名字.注意:P ...
- iOS推送失败的可能问题汇总
ITC上的证书问题 AppID未开启推送 Provioning Profile在AppID开启推送功能前生成的 Provioning证书过期 推送的pem证书过期 客户端问题 target的CodeS ...
- params参数的调用
namespace params参数的用法 { class Program { public static void Test(string name,params int[] score) { ; ...
- mysql 用户方面的操作
1.只新建用户的操作 mysql -u root -p密码mysql> insert into mysql.user(Host,User,Password) values(‘localhost’ ...
- C开发基础--函数调用栈
发现有一些问题几乎是所有的新人都会遇到,而且也常因为缺乏一些基本的知识而无从下手.函数调用栈的内容就是其中之一.于是花点时间把以前写的内容整理出来. 程序在运行期间,内存中有一块区域,用来实现程序的函 ...
- JS的运行机制
代码块: JS中的代码块是指由<script>标签分割的代码段.JS是按照代码块来进行编译和执行的,代码块间相互独立(即就算代码块1出错,但不影响代码块2的加载和执行),但变量和方法共享. ...
- POJ 1837 Balance
Balance Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 9240 Accepted: 5670 Description G ...
- cf.295.C.DNA Alignment(数学推导)
DNA Alignment time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...
- java笔记--反射机制之基础总结与详解
一.反射之实例化Class类的5种方式: java的数据类型可以分为两类,即引用类型和原始类型(即基本数据类型). 对于每种类型的对象,java虚拟机会实例化不可变的java.lang.Class对象 ...
- OpenCV的基本数据结构
参考:http://www.cnblogs.com/guoqiaojin/p/3176692.html