MongoDB学习笔记——文档操作之增删改
插入文档
使用db.COLLECTION_NAME.insert() 或 db.COLLECTION_NAME.save() 方法向集合中插入文档
db.users.insert( {
user_id: "abc123",
age: 55,
status: "A"
} )
在插入的文档中,如果没有指定 _id 参数,MongoDB 会自动为文档指定一个唯一的 ID。
使用db.COLLECTION_NAME.insert() 方法传入一个文档数组,进行批量插入
db.users.insert( [{
user_id: "abc123",
age: 55,
status: "A"
},{
user_id: "abc3",
age: 55,
status: "A"
},{
user_id: "abc13",
age: 55,
status: "A"
}] )
也可以使用db.users.save(document) 插入文档。如果没有指定文档的 _id,那么 save() 就和 insert() 完全一样了。如果指定了文档的 _id,那么它会覆盖掉含有 save() 方法中指定的 _id的文档的全部数据。
更新文档
使用db.COLLECTION_NAME.update() 或 db.COLLECTION_NAME.save() 方法来更新集合中的文档
update 语法格式
db.COLLECTION_NAME.update(
<query>,
<update>,
{
upsert: <boolean>,
multi: <boolean>,
writeConcern: <document>
}
)
参数说明:
- query : update的查询条件,类似sql update查询内where后面的。
- update : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的
- upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
- multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
- writeConcern :可选,抛出异常的级别。
db.users.update({'user_id':"abc13"},{$set:{'age':77}})
save语法格式
db.COLLECTION_NAME.save 方法利用传入该方法的文档来替换已有文档(通俗解释:如果save方法传入的文档结构A与原文档结构B不一致时,则会使用新的文档结构A替换原来的文档结构B)。如果没有指定文档的 _id,那么 save() 就和 insert() 完全一样了。如果指定了文档的 _id,那么它会覆盖掉含有 save() 方法中指定的 _id的文档的全部数据
db.COLLECTION_NAME.save(
<document>,
{
writeConcern: <document>
}
)
参数说明:
- document : 文档数据。
- writeConcern :可选,抛出异常的级别。
db.users.save({"_id" : ObjectId("582194dd7f953cec73197bb1"),'status':"OK"})
删除文档
使用db.COLLECTION_NAME.remove() 方法来删除集合中的文档
remove 语法格式
db.COLLECTION_NAME.remove(
<query>,
{
justOne: <boolean>,
writeConcern: <document>
}
)
参数说明:
- query :(可选)删除的文档的条件
- justOne : (可选)如果设为 true 或 1,则只删除一个文档。
- writeConcern :(可选)抛出异常的级别。
db.users.remove({"status" : 'OK'})
如果你只想删除第一条找到的记录可以设置 justOne 为 1
db.COLLECTION_NAME.remove(query,1)
如果想删除集合中的所有数据可以通过以下方式处理(相当于关系型数据库中的truncate 命令)
db.COLLECTION_NAME.remove({})
关系型数据库与MongoDB数据库在一些术语上的对比
关系型数据库(mysql) |
MongoDB |
备注 |
insert into `testdb`.`users` (`user_id`,`age`,`status`) values (1,100,"A"); |
db.users.insert( { user_id: "abc123", age: 55, status: "A" } ) 或 db.users.save( { user_id: "abc123", age: 55, status: "A" } ) |
|
update `testdb`.`users` set age=50 where age=100 |
db.users.update({'age':100},{$set:{'age':50}},{multi:true}) |
根据主键更新全表数据时可以使用db.COLLECTION_NAME.save()语法,部分字段更新不建议使用 |
update `testdb`.`users` set age=50 where age=100 limit 1 |
db.users.update({'age':100},{$set:{'age':50}},{multi:false}) |
根据主键更新全表数据时可以使用db.COLLECTION_NAME.save()语法,部分字段更新不建议使用 |
delete from `testdb`.`users` where age=100 limit 1 |
db.users.remove({'age':100},1) |
|
delete from `testdb`.`users` where age=100 |
db.users.remove({'age':100}) |
|
truncate `testdb`.`users` |
db.users.remove({}) |
MongoDB学习笔记——文档操作之增删改的更多相关文章
- MongoDB学习笔记——文档操作之查询
查询文档 使用db.COLLECTION_NAME.findOne()可以查询所有满足条件的第一条数据 预发格式如下: db.COLLECTION_NAME.findOne(<query> ...
- MongoDB入门---文档操作之增删改
之前的两篇文章,已经分享过关于MongoDB的集合还有数据库的各种操作,接下来就涉及到最主要的喽,那就是数据方面的操作,在这里叫做文档操作.话不多说,大家来看正文. 首先来看一下它的数据结构: ...
- mongoDB文档操作【增删改】
MongoDB 插入文档 文档的数据结构和JSON基本一样. 所有存储在集合中的数据都是BSON格式. BSON是一种类json的一种二进制形式的存储格式,简称Binary JSON. 插入文档 Mo ...
- mongodb内嵌文档的javaapi,增删改查
数据结构: {"_id" : "000000001", //Mongodb默认主键 "UID" : "000000001&quo ...
- mongoDB 文档操作_增
增加 / 插入 /保存 单文档插入 命令 db.collection.insertOne(doc) 功能 向被 use 的数据库中插入数据 实例 db.class.insertOne({"n ...
- MongoDB学习笔记二—Shell操作
数据类型 MongoDB在保留JSON基本键/值对特性的基础上,添加了其他一些数据类型. null null用于表示空值或者不存在的字段:{“x”:null} 布尔型 布尔类型有两个值true和fal ...
- MongoDB 集合与文档操作
一.创建DB 1.查看DB >show dbs 2.创建DB >use mydb 3.查看当前DB >db 4.删除DB >use mydb >db.dropDataba ...
- StyleCop学习笔记-文档规则
文档规则: .SA1600:ElementsMustBeDocumented元素必须添加注释 .SA1601: PartialElementsMustBeDocumented Partial修饰的成员 ...
- Mongodb学习笔记五(C#操作mongodb)
mongodb c# driver(驱动)介绍 目前基于C#的mongodb驱动有两种,分别是官方驱动(下载地址)和samus驱动(下载地址). 本次我们只演示官方驱动的使用方法. 官方驱动文档查看 ...
随机推荐
- 性能测试类,让你写法代码养成经常测试的好习惯 -ASP.NET C#
介绍: 可以很方便的在代码里循环执行 需要测试的函数 自动统计出执行时间,支持多线程. 使用方法: PerformanceTest p = new PerformanceTest(); p.SetC ...
- js-二维数组和多维数组
一.二维数组的表示 myarray[][] 二.二维数组的定义 方法一: var a = new Array(); for(var i=0;i<3;i++){ //一维长度为3 a[i] = n ...
- 关于解决JQUERY对INPUT元素Change事件不兼容的问题
最近开发一个项目,需要实现用户在WEB表单里的多个INPUT框中输入数量后,立即自动计算加总各项输入的数量之和,并显示在指定的INPUT框中,这个功能实现的原理是简单的,就是只需要在INPUT的onc ...
- C#函数式程序设计之局部套用与部分应用
函数式设计的核心与函数的应用以及函数如何作为算法的基本模块有关.利用局部套用技术可以把所有函数看成是函数类的成员,这些函数只有一个形参,有了局部套用,才有部分应用.部分应用是使函数模块化成为可能的两个 ...
- ThroughRain第一次冲刺个人总结
团队名:ThroughRain 项目确定:<餐厅到店点餐系统> 项目背景:本次项目是专门为餐厅开发的一套订餐系统.大家有没有发现在节假日去餐厅吃饭会超级麻烦,人很多, 热门的餐厅基本没有座 ...
- 无意中在sql日志中发现如下内容,
日期,源,严重性,消息01/06/2015 09:06:13,登录,未知,Length specified in network packet payload did not match number ...
- 用stimulsoft Reports报表工具制作简单报表的过程
这是在数据库sql server中People表的数据
- 重新想象 Windows 8 Store Apps 系列文章索引
[源码下载][重新想象 Windows 8.1 Store Apps 系列文章] 重新想象 Windows 8 Store Apps 系列文章索引 作者:webabcd 1.重新想象 Windows ...
- ActiveReports 报表应用教程 (6)---分组报表
在 ActiveReports 中可以设置单级分组.嵌套分组,同时,还可以使用表格.列表以及矩阵等数据区域控件对数据源进行分组操作.分组报表在商业报表系统中应用不胜枚举,客户信息归类统计表.商品分类统 ...
- jsp中自定义Taglib案例
一.使用TagSupport类案例解析 1.自定义Tag使用jdbc连接mysql数据库 1.1定义标签处理器类 package com.able.tag; import java.sql.Conne ...