MongoDB笔记(三):Document 数据插入、删除、更新
实例数据库caliven、集合users
一、插入文档
1.插入文档
db.[documentName].insert({})
2.批量插入文档 、shell 这样执行是错误的db.[documentName].insert([{},{},{},……..]) shell不支持批量插入,
想完成批量插入可以用mongo的应用驱动或是shell的for循环:
for(var i=0; i<=10;i++){
db.[documentName].insert({name:i})
}
3.Save操作:save操作和insert操作区别在于当遇到_id相同的情况下,save完成保存操作,insert则会报错。
二、删除文档
1.删除列表中所有数据
db.[documentName].remove()
集合的本身和索引不会别删除
2.根据条件删除
db.[documentName].remove({})
删除集合users中name等于Tom的纪录 db.users.remove({name:”Tom”})
3.小技巧:如果你想清除一个数据量十分庞大的集合,直接删除该集合并且重新建立索引的办法,比直接用remove的效率和高很。
三、更新文档
1.强硬的文档替换式更新操作
db.[documentName].update({查询器},{修改器})
强硬的更新会用新的文档代替老的文档
2.主键冲突的时候会报错并且停止更新操作
因为是强硬替换当替换的文档和已有文档ID冲突的时候则系统会报错
3.insertOrUpdate操作
目的:查询器查出来数据就执行更新操作,查不出来就替换操作
做法:db.[documentName].update({查询器},{修改器},true)
4.批量更新操作
默认情况当查询器查询出多条数据的时候默认就修改第一条数据
如何实现批量修改:db.[documentName].update({查询器},{修改器},false, true)
5.使用修改器来完成局部更新操作
| 修改器名称 |
语法 |
案例 |
| $set |
{$set:{field: value}} |
{$set:{name:”uspcat”}} |
|
它用来指定一个键值对,如果存在键就进行修改不存在则进行添加. |
||
| $inc |
{ $inc : { field : value } } |
{ $inc : { "count" : 1 } } |
|
只是使用与数字类型,他可以为指定的键对应的数字类型的数值进行加减操作. |
||
| $unset |
{ $unset : { field : 1} } |
{ $unset : { “name":1 } |
| 他的用法很简单,就是删除指定的键 | ||
| $push |
{ $push : { field : value } } |
{ $push : { books:”JS”} |
|
1.如果指定的键是数组增追加新的数值 2.如果指定的键不是数组则中断当前操作Cannot apply $push/$pushAll modifier to non-array 3.如果不存在指定的键则创建数组类型的键值对 |
||
| $pushAll |
{ $pushAll : { field : array } } |
{ $push : { books:[“EXTJS”,”JS”]} |
|
用法和$push相似他可以体谅添加数组数据 |
||
| $addToSet |
{ $addToSet: { field : value } } |
{ $addToSet: { books:”JS”} |
|
目标数组存在此项则不操作,不存在此项则加进去 |
||
| $pop |
{$pop:{field: value}} |
{$pop:{name:1}} {$pop:{name:-1}} |
|
从指定数组删除一个值1删除最后一个数值,-1删除第一个数值 |
||
|
$pull |
{ $pull: { field : value } } |
{ $pull : { “book" : “JS” } } |
|
删除一个被指定的数值 |
||
|
$pullAll |
{ $pullAll: { field : array} } |
{ $pullAll: { “name":[“JS”,”JAVA”] } |
|
一次性删除多个指定的数值 |
||
| $ |
{ $push : { field : value } } |
{ $push : { books:”JS”} |
|
1.数组定位器,如果数组有多个数值我们只想对其中一部分进行操作我们就要用到定位器($) 例子: 例如有文档{name:”YFC”,age:27,books:[{type:’JS’,name:”EXTJS4”},{type:”JS”,name:”JQUERY”},{type:”DB”,name:”MONGODB”}]} 我们要把type等于JS的文档增加一个相同的作者author是USPCAT 办法: db.text.update({"books.type":"JS"},{$set:{"books.$.author":"USPCAT"}}) |
||
MongoDB笔记(三):Document 数据插入、删除、更新的更多相关文章
- 09Microsoft SQL Server 表数据插入,更新,删除
Microsoft SQL Server 表数据插入,更新,删除 向表中插入数据 INSERT INTO insert into tb1 values(0004,'张凤凤') insert into ...
- 09Oracle Database 数据表数据插入,更新,删除
Oracle Database 数据表数据插入,更新,删除 插入数据 Insert into table_name(column) values(values); insert into studen ...
- 定时从远程的数据库中取数据,然后把取出来的数据插入或更新本地的oracle数据库的表
最近项目中有一种需求: 大致需求是这样的 通过给定的 用户名和密码 要定时从远程的数据库中取数据,然后把取出来的数据插入或更新本地的oracle数据库的表 项目的结构式struts1 hibernat ...
- .NET 百万级 大数据插入、更新 ,支持多种数据库
功能介绍 (需要版本5.0.44) 大数据操作ORM性能瓶颈在实体转换上面,并且不能使用常规的Sql去实现 当列越多转换越慢,SqlSugar将转换性能做到极致,并且采用数据库最佳API 操作数据库 ...
- MYSQL数据插入、更新及删除
上文讲到创建数据表,本文介绍create table后的数据插入: 一.通过insert into ...values...插入 insert into tablename (column1,colu ...
- MySQL-快速入门(6)连接查询、子查询、正则表达式查询、数据的插入删除更新
1.内连接查询:inner join ... on 只有满足条件的记录才能够出现在结果关系中,即完全相等.自连接查询是一种特殊的内连接查询. 2.外连接查询: 1>左外连接 / 左连接:返回包括 ...
- mongodb笔记(三)
1.删除文档(remove()函数) 在执行remove()函数前先执行find()命令来判断执行的条件是否正确,这是一个比较好的习惯. 语法: db.collection.remove( <q ...
- SQL SERVER数据库三种数据插入方式
数据插入:INSERT INTO A(CBM,CMC) VALUES('1','测试')--单条数据插入INSERT INTO A(CBM,CMC)SELECT '1','测试'--单条数据插入INS ...
- MYSQL初级学习笔记三:数据的操作DML!(视频序号:初级_24,25,36)
知识点五:数据的操作DML(24,25,36) 插入数据: --测试插入记录INSERT CREATE TABLE IF NOT EXISTS user13( id TINYINT UNSIGNED ...
随机推荐
- 原生js编写设为首页兼容ie、火狐和谷歌
// JavaScript Document // 加入收藏 <a onclick="AddFavorite(window.location,document.title)" ...
- POJ 1163.The Triangle-动态规划
The Triangle Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 50122 Accepted: 30285 De ...
- 传统路径导出 VS 直接路径导出(oracle exp direct=y)
Oracle 传统的Export与Import依旧被保留到11g,而且9i与10g有很多依旧使用Export与Import方式进行备份与恢复的企业.从Oracle 7.3开始,传统的exp导出程序提供 ...
- 谜题27:变幻莫测的i值
与谜题26中的程序一样,下面的程序也包含了一个记录在终止前有多少次迭代的循环.与那个程序不同的是,这个程序使用的是左移操作符(<<).你的任务照旧是要指出这个程序将打印什么.当你阅读这个程 ...
- [BZOJ 1926] 粟粟的书架
BZOJ 传送门 Luogu 传送门 BZOJ的sillyB评测机各种无故CE,只好去Luogu上A了o(╯□╰)o Solution: 从数据范围可以发现,这其实是2道题: (1)一个$R*C$的矩 ...
- 【MySQL笔记】数据操纵语言DML
1.数据插入 INSERT INTO table_name (列1, 列2,...) VALUES(值1, 值2,....),(第二条),(第三条)... 注: 1)如果表中的每一列均有数据插 ...
- JAVA EE 学习笔记
http://www.cnblogs.com/kuangdaoyizhimei/category/701794.html http://www.cnblogs.com/liunanjava/p/445 ...
- 【jQuery】jquery中 使用$('#parentUid').attr(parentUid);报错jquery-1.11.3.min.js:5 Uncaught TypeError: Cannot read property 'nodeType' of undefined
jquery中 使用$('#parentUid').attr(parentUid);报错jquery-1.11.3.min.js:5 Uncaught TypeError: Cannot read p ...
- easyui missingMessage
<input class="easyui-textbox" type="text" name="username" style=&qu ...
- 80端口被system进程占用解决方法
今天启动Apache的时候老是提示失败,很简单,使用 netstat -ano 发现80端口被占用.如图所示: 按照PID 来说:在任务管理器中查看PID 的进程名 既然是system.那么 应该不回 ...