文档的更新和删除

  • 更新文档的方法:

    db.collection.update(query,update,options)
    //或
    db.collection.update(
    <query>, --类似于sql中的where 字句
    <update>, --要更新的字段值
    {
    upsert: <boolean>,
    multi: <boolean>,
    writeConcern: <document>,
    collection: <document>,
    arrayFilters: [<filterdocument1 >,...],
    hint: <document|String>
    }
    )
    ------------------------------------------------------- 示例:
    (1):覆盖的修改 ---不推荐
    如果我们想修改_id为1的记录,点赞量会520,这输入以下语句
    db.comment.update({_id:"1"},{likenum:NumberInt(520)}) 执行后我们发现,这条文档除了likenum字段,其它字段都不见了 (2):局部修改---使用 $set修改器
    db.comment.update({_id:"2"},{$set:{likenum:NumberInt(520)}}) 执行:
    > db.comment.update({_id:"2"},{$set:{likenum:NumberInt(520)}})
    WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) > db.comment.findOne({_id:"2"}) #查找
    {
    "_id" : "2",
    "articleid" : "100002",
    "content" : "我爱你,绩憨憨2",
    "userid" : "1002",
    "nickname" : "hanhan",
    "createdatetime" : ISODate("2020-02-27T14:17:24.708Z"),
    "likenum" : 520,
    "state" : null
    } (3);批量修改
    修改所有nickname:"hanhan" 为 "jihanhan" > db.comment.find({})
    { "_id" : ObjectId("5e57cc7d24335849dc4a2ab8"), "articleid" : "100000", "content" : "我爱你,中国", "userid" : "1001", "nickname" : "Rose", "createdatetime" : ISODate("2020-02-27T14:04:45.459Z"), "likenum" : 10, "state" : null }
    { "_id" : "2", "articleid" : "100002", "content" : "我爱你,绩憨憨2", "userid" : "1002", "nickname" : "hanhan", "createdatetime" : ISODate("2020-02-27T14:17:24.708Z"), "likenum" : 520, "state" : null }
    { "_id" : "3", "articleid" : "100003", "content" : "我爱你,绩憨憨3", "userid" : "1003", "nickname" : "hanhan", "createdatetime" : ISODate("2020-02-27T14:17:24.709Z"), "likenum" : 10, "state" : null }
    { "_id" : "4", "articleid" : "100004", "content" : "我爱你,绩憨憨4", "userid" : "1004", "nickname" : "hanhan", "createdatetime" : ISODate("2020-02-27T14:17:24.709Z"), "likenum" : 10, "state" : null } //默认只修改第一条匹配的数据
    db.comment.update({nickname:"hanhan"},{$set:{nickname:"jihanhan"}}) //修改所有符合条件的数据---添加字段{multi:true}
    db.comment.update({nickname:"hanhan"},{$set:{nickname:"jihanhan2"}},{multi:true}) 执行 :
    > db.comment.update({nickname:"hanhan"},{$set:{nickname:"jihanhan"}})
    WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) > db.comment.update({nickname:"hanhan"},{$set:{nickname:"jihanhan2"}},{multi:true})
    WriteResult({ "nMatched" : 2, "nUpserted" : 0, "nModified" : 2 }) (4):列值增长的修改
    实现对某列值在原有值的基础上进行增长或者减少,可以使用$inc运算符来实现。
    需求:对3号数据的点赞数,每次递增1
    db.comment.update({_id:"3"},{$inc:{likenum:NumberInt(1)}}) 执行:
    > db.comment.update({_id:"3"},{$inc:{likenum:NumberInt(1)}})
    WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
  • 删除文档

    删除文档的语法结构
    db.集合名称.remove(条件) 以下语句可以全部删除:------慎用
    db.comment.remove({}) 如果删除_id="2"的记录
    执行:
    db.comment.remove({_id:"2"})
    WriteResult({ "nRemoved" : 1 })

MongoDB_05_更新和删除的更多相关文章

  1. Entity Framework 6 Recipes 2nd Edition(10-10)译 - > 为TPH继承的插入、更新、删除操作映射到存储过程

    10-10. 为TPH继承的插入.更新.删除操作映射到存储过程 问题 TPH继承模型,想把它的插入.修改.删除操作映射到存储过程 Solution 假设数据库有一个描述不同种类的产品表(Product ...

  2. ASP.NET MVC对WebAPI接口操作(添加,更新和删除)

    昨天<怎样操作WebAPI接口(显示数据)>http://www.cnblogs.com/insus/p/5670401.html 既有使用jQuery,也有使作HttpClient来从数 ...

  3. MongoDB学习笔记~大叔分享批量添加—批量更新—批量删除

    回到目录 说它是批量操作,就是说将集合对象一次提交到服务器,并对数据进行持久化,如果您的代码是一次一次的提交,那不算是批量操作!在之前的mongodb仓储中并没有对批量更新和批量删除进行实现,而今天在 ...

  4. mysql中更新或者删除语句中子语句不能操作同一个表You can't specify target table 'test' for update in FROM clause

    问题描述:有个数据表test,有个字段value,如下 mysql> select * from test;+----+------------------------------------+ ...

  5. SQL图形化操作设置级联更新和删除

    SQL级联操作设置   对SQL数据库的表,进行级联操作(如级联更新及删除),首先需要设置表的主外键关系,有两种方法:   第一种:   1. 选择你要进行操作的数据库   2. 为你要创建关系的两个 ...

  6. MySQL(四) 数据表的插入、更新、删除数据

    序言 数据表的插入.更新.删除非常简单,但是简单的也要学习,细节决定成败. ---WH 一.插入数据 格式:INSERT INTO 表名(字段名...)VALUES(值...); 创建环境 使用per ...

  7. PHP5: mysqli 插入, 查询, 更新和删除 Insert Update Delete Using mysqli (CRUD)

    原文: PHP5: mysqli 插入, 查询, 更新和删除  Insert Update Delete Using mysqli (CRUD) PHP 5 及以上版本建议使用以下方式连接 MySQL ...

  8. 整理sqlserver 级联更新和删除 c#调用存储过程返回值

    整理一下级联更新和删除 c#调用返回值 use master go IF exists(select 1 from sysdatabases where name='temp') BEGIN DROP ...

  9. Hibernate批处理操作优化 (批量插入、更新与删除)

    问题描述 我开发的网站加了个新功能:需要在线上处理表数据的批量合并和更新,昨天下午发布上线,执行该功能后,服务器的load突然增高,变化曲线异常,SA教育了我一番,让我尽快处理,将CPU负载降低. 工 ...

随机推荐

  1. java - GC垃圾收集器详解(三)

    以前收集器的特点 年轻代和老年代是各自独立且连续的内存块 年轻代收集必须使用单个eden+S0+S1进行复制算法 老年代收集扫描整个老年代区域 都是以尽可能少而快速地执行GC为设计原则 G1是什么 G ...

  2. 使用ESLint+Prettier来统一前端代码风格

    Prettier 简单使用 ESLint 与 Prettier配合使用 首先肯定是需要安装 prettier ,并且你的项目中已经使用了 ESLint ,有 eslintrc.js 配置文件. npm ...

  3. [CF1034B] Longest Palindrome - 贪心

    如果自己是回文串可以做中心 如果一个串和另一个串的转置相等则可以凑一对 优先配对 #include <bits/stdc++.h> using namespace std; int n,m ...

  4. IntelliJ WebStorm 2020最新 永久破解激活教程【全网最强,可用至2100年】

    说明:都到了2020年,当然要用最新的IDE,目前最新是2019.3.1版本 ①IntelliJ WebStorm 2019.3.1安装永久破解[最强] 一. 在官网下载WebStorm安装包  链接 ...

  5. CTF——代码审计之变量覆盖漏洞writeup【1】

    题目: 所需基础知识: 分析: 思路:由于目的是要拿$flag的值,所以可以得出最终会输出两个变量,而$flag的值在红框那行,被我们自己post的值给覆盖,所以flag值肯定不会在这出来,那么只剩下 ...

  6. vs2019清空输入缓冲区

    发现用cin.sync()在vs2019中不能清空输入缓冲区,以前的vs版本没试过,我看别人在vc中用cin.sync()可以清除,估计是IDE的问题..以下是我学习C++四个多月写的一整段代码 运行 ...

  7. Java类、方法、属性等

    java是面向对象的编程语言 Object,就是指面向对象的对象,对象就是类的具体实例. 在java里,对象是类的一个具体实例.就像:人,指一个类.张三.李四.王五等则是一个个具体的实例,也就是jav ...

  8. DTW + python 矩阵操作 + debug

    1.  from here. diagonalReturn specified diagonals. diagflatCreate a 2-D array with the flattened inp ...

  9. 一看就会一做就废系列:说说 RECOVER DATABASE(上)

    这里是:一看就会,一做就废系列 数据库演示版本为 19.3 (12.2.0.3) 该系列涉及恢复过程中使用的 个语句: 1. recover database 2. recover database ...

  10. sql注入的原理是什么,怎么预防sql注入

    为什么会产生sql注入: 主要原因,对用户输入的绝对信任,相信所有用户的输入都是可信的,没有对用户输入的语句进行过滤或者筛选,直接放到sql语句中进行拼接,从而导致了sql注入的产生 例如: < ...