`
zc985552943
  • 浏览: 290790 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
Babe4ca6-5e6f-33aa-9078-762ee3ccfb7e
云计算--hadoop
浏览量:11839
5e98c2c1-2a82-3388-bc80-7fca0170bb12
redis解说
浏览量:27116
088014c7-4d3f-39ce-b72e-4ebe7046a134
MongoDB读书笔记
浏览量:15983
D2b74847-c860-3e26-96fe-3fa4498d6348
Maven读书笔记
浏览量:27208
688db20f-402d-3a1d-8188-d6153d6c7465
Java通信
浏览量:13663
社区版块
存档分类
最新评论

03_MongoDB_增_删_改文档

阅读更多

增删改文档

数据库操作无非就是增、删、改、查。这篇主要介绍增、删、改。

1.增

Mongodb插入操作很简单,使用关键字“insert”。实例:

> db.test.blog.insert({"haha":"xiaohaha","abc":"123"})
> db.test.blog.find();
{ "_id" : ObjectId("5334dd149b7a445ea2166559"), "title" : "love", "content" : "I
 love you" }
{ "_id" : ObjectId("5334dd669b7a445ea216655a"), "job" : "java", "city" : "wuhan"
 }
{ "_id" : ObjectId("5334ec3f9b7a445ea216655b"), "a" : "b" }
{ "_id" : ObjectId("5338bc89125a366c3f32dd00"), "haha" : "xiaohaha" }
{ "_id" : ObjectId("5338bce3125a366c3f32dd01"), "haha" : "xiaohaha", "abc" : "12
3" }
>

 

使用insert关键字,里面设置文档。如果文档中没有“_id”,Mongodb会自动生成。

当执行插入操作时,数据库会校验是否包含“_id”键,并且文档不超过4MB,除此之外,不做其他检查。这样使得数据库更加安全,远离注入式攻击(Mongodb在插入时不执行代码)。

2.删

 

> db.test.blog.remove({"a":"b"})
> db.test.blog.find({"a":"b"})
> db.test.blog.remove()

 

remove可以接受一个查询文档作为可选参数,给定参数以后,只有符合条件的文档才会被删除。如果没有带参数,那么就是删除集合中的所有文档,但是不会删除集合本身,原来的索引也会保留。

3.改

文档存入数据库后,可以使用update方法来修改它,update有两个参数一个是查询文档,用来找出要更新的文档,另一个是修改器文档,描述对找到的文档做哪些修改。更新操作时原子的,若是两个更新同事发生,先到达服务器的先执行,接着执行另一个。

更新方式一:文档结构变动比较大使用
> var jobs = db.test.blog.findOne({"job":"java"});   //这里这能查询单个对象,才能在后面使用update修改
> jobs.job = "hadoop";
hadoop
> jobs.exp = "5 year";
5 year
> jobs.city = ["wuhan","beijin","shanghai"];
[ "wuhan", "beijin", "shanghai" ]
> db.test.blog.update({"job":"java"},jobs);  //使用update修改
> db.test.blog.find({"job":"hadoop"});
{ "_id" : ObjectId("5334dd669b7a445ea216655a"), "job" : "hadoop", "city" : [ "wuhan", "beijin", "shanghai" ], "exp" : "5 year" }
 更新方式二:使用修改器,文档只做部分更新使用
  • $set和$unset

$set用来指定一个键的值。如果键不存在,则创建它。可以用来修改值,数组,内嵌文档。

$unset用来卸载一个键值对。

> db.test.blog.insert({"_id":0001,"name":"joe","age":25,"favortie":"book"}); //插入数据
> db.test.blog.find();  //查询
{ "_id" : 1, "name" : "joe", "age" : 25, "favortie" : "book" }
> db.test.blog.update({"name":"joe"},  //更新单个数据age,并且改变数据类型int->string
... {"$set":{"age":"29"}})
> db.test.blog.find();
{ "_id" : 1, "age" : "29", "favortie" : "book", "name" : "joe" }
> db.test.blog.update({"name":"joe"},  //变为数组
... {"$set":{"favortie":["book","tv"]}})
> db.test.blog.find();
{ "_id" : 1, "age" : "29", "favortie" : [ "book", "tv" ], "name" : "joe" }

 

> db.test.blog.find();
{ "_id" : 1, "age" : "29", "favortie" : [ "book", "tv" ], "name" : "joe" }
> db.test.blog.update({"name":"joe"},
... {"$unset":{"age":1}})
> db.test.blog.find();
{ "_id" : 1, "favortie" : [ "book", "tv" ], "name" : "joe" }
  •  更新数字

$inc用来增加键值,键不存在时创建

> db.test.blog.update({"name":"joe"},{"$inc":{"age":1}});
> db.test.blog.find();
{ "_id" : 1, "age" : 1, "favortie" : [ "book", "tv" ], "name" : "joe" }
  •  数组修改器

$push会向已有的数组末尾加入一个元素,要是没有就创建数组

> db.test.blog.find();
{ "_id" : 1, "age" : 1, "like" : [ "eat", "booke" ], "name" : "joe" }
> db.test.blog.update({"name":"joe"},{$push:{"like":"abc"}});
> db.test.blog.find();
{ "_id" : 1, "age" : 1, "like" : [ "eat", "booke", "abc" ], "name" : "joe" }

 $pop可以从数组任何一端删除元素。{$pop:{key:1}}从数组末尾删除,{$pop:{key:1}}则从头部删除

$pull基于特定条件删除

> db.test.blog.update({"name":"joe"},{$pull:{"like":"booke"}});
> db.test.blog.find();
{ "_id" : 1, "age" : 1, "like" : [ "eat", "abc" ], "name" : "joe" }
  •  数组定位

数组定位可以使用位置或者定位操作符“$”

数组下标都是从0开始,所以可以使用下标直接作为键来选择元素

  • 使用upsert(update or insert)

upsert是一种特殊的更新,要是没有文档符合更新要求,就会以这个条件和更新文档做为基础创建一个新的文档。如果找到匹配的文档,则正常更新。update的第三个参数表示是否使用upsert更新

> db.test.blog.find()  //查询所有数据
{ "_id" : 1, "age" : 1, "like" : [ "eat", "abc" ], "name" : "joe" }  //没有我要更新的数据
> db.test.blog.update({"url":"www.baidu.com"},{"$inc":{"visits":1}},true)  //使用upsert方式修改
> db.test.blog.find()  //查询所有数据,发现多了一个文档
{ "_id" : 1, "age" : 1, "like" : [ "eat", "abc" ], "name" : "joe" }
{ "_id" : ObjectId("533a1c27b653a97435a02030"), "url" : "www.baidu.com", "visits
" : 1 }
> db.test.blog.update({"url":"www.baidu.com"},{"$inc":{"visits":1}},true)  //再次使用upsert
> db.test.blog.find()
{ "_id" : 1, "age" : 1, "like" : [ "eat", "abc" ], "name" : "joe" }  //发现是修改文档
{ "_id" : ObjectId("533a1c27b653a97435a02030"), "url" : "www.baidu.com", "visits
" : 2 }
  •  更新多个文档

默认情况下,更新只对符合条件的第一个文档进行修改,如果有多个符合条件的文档,其余文档就没有变化。如果想要更新所有匹配条件的文档,就要设置第四个参数为true

> db.test.blog.find({"url":"www.baidu.com"});  //查询url为baidu的记录有两条
{ "_id" : ObjectId("533a1c27b653a97435a02030"), "url" : "www.baidu.com", "visits
" : 2 }
{ "_id" : "2", "url" : "www.baidu.com", "visits" : "5" }
 //更新所有符合条件的数据
> db.test.blog.update({"url":"www.baidu.com"},{"$set":{"visits":10}},false,true)

> db.test.blog.find({"url":"www.baidu.com"});  //重新查询,数据都修改了
{ "_id" : ObjectId("533a1c27b653a97435a02030"), "url" : "www.baidu.com", "visits
" : 10 }
{ "_id" : "2", "url" : "www.baidu.com", "visits" : 10 }

 update的四个参数描述:

1.需要更新文档匹配的条件

2.需要更新的数据

3.是否采用upsert方式更新:默认false

4.是否使用匹配条件的文档都修改:默认false

分享到:
评论

相关推荐

    navicat121_mongodb_cs_x64+navicat121_mongodb_cs_x86.rar

    3. 数据编辑:支持数据的增删改查操作,提供网格视图和表单视图两种编辑模式。 4. SQL构建器:对于支持SQL的数据库,Navicat提供了便捷的SQL编写和执行功能,有自动完成代码、错误检查和优化建议等特性。 5. 数据...

    MongoDB参考手册.zip_MongoDB_T6U_mongodb中文手册

    在MongoDB的操作方面,手册会涵盖增删改查(CRUD)操作。增加数据时,可以使用`insertOne()`或`insertMany()`方法将单个或多个文档插入到集合中。删除操作有`deleteOne()`和`deleteMany()`,用于删除一个或多个匹配...

    java连接Mongodb进行增删改查_java连接Mongodb进行增删改查_curiousjop_depthklb_Mong

    本篇文章将详细讲解如何使用Java连接到MongoDB数据库,并进行基本的增删改查操作。 首先,连接MongoDB需要引入MongoDB的Java驱动程序。在Maven项目中,可以在pom.xml文件中添加以下依赖: ```xml <groupId>org....

    dome_MongoDB_

    在本示例中,"dome_MongoDB_" 的标题暗示我们将探讨如何在MongoDB中执行基本的数据操作,包括增(添加数据)、删(删除数据)、改(更新数据)和查(查询数据)。下面,我们将深入讲解这些知识点。 ### 增(Add) ...

    mongodb的小例子,增删改查,分页

    在"mongodb的小例子,增删改查,分页"这个主题中,我们将深入探讨MongoDB的基本操作,包括数据的插入(增)、查询(查)、更新(改)以及删除(删),同时还会涉及到数据分页这一重要的数据检索技术。 1. 数据插入...

    mongoDB增删改查+前端页面实现+idea+themlesf+mybatis

    在本项目中,我们将探讨如何使用MongoDB进行数据的增删改查操作,以及如何结合前端页面、IntelliJ IDEA开发环境、Thymeleaf模板引擎和MyBatis持久层框架来构建一个完整的应用程序。 首先,让我们深入了解MongoDB的...

    MONGOdb视频教程地址.txt

    真实有效的mongodb视频教程地址 深入浅出 MongoDB 高清IT教程视频下载 ... 2.1、_MongoDB增、删、改文档】.mp4 2.2、-MongoDB查询语法1.mp4 2.3、_MongoDB查询语法2.mp4 2.4、-MongoDB查询语法3.mp4

    JAVA操作MongoDB简单增删改查

    本教程将详细介绍如何使用Java与MongoDB进行交互,包括基本的增删改查(CRUD)操作。首先,我们需要引入MongoDB的Java驱动程序,这通常通过Maven或Gradle的依赖管理来实现。 1. **添加依赖** 在Maven的`pom.xml`...

    MongoDb增删改查的网站范例

    在这个“MongoDb增删改查的网站范例”中,我们将探讨如何利用Spring Data项目和MongoDB适配器进行数据库操作。 Spring Data是一个强大的框架,它简化了与各种数据存储系统的交互,包括MongoDB。Spring Data MongoDB...

    Java MongoDB 增删改查Demo程序

    通过学习和实践这些示例,你将能够熟练地在Java应用程序中与MongoDB进行交互,进行数据的增删改查操作。在实际项目中,你可能还需要关注错误处理、连接池管理、事务支持等方面,以确保应用程序的健壮性和性能。

    java 操作mongodb 增删改查

    本教程将详细介绍如何使用Java进行MongoDB的基本操作,包括增(添加数据)、删(删除数据)、改(修改数据)和查(查询数据)。 首先,你需要在项目中引入MongoDB的Java驱动程序。目前最新的稳定版本是`mongodb-...

    MongoDB java实现增删改查

    在Java开发中,我们可以使用MongoDB的Java驱动程序来实现对MongoDB数据库的增、删、改、查(CRUD)操作。以下是对这些核心功能的详细说明。 1. **增加(Create)** 要在MongoDB中插入数据,我们需要使用`...

    node.连接mongodb实现增删改查.zip

    在本文中,我们将深入探讨如何使用Node.js连接MongoDB数据库并实现基本的增删改查操作。MongoDB是一个流行的文档型数据库系统,而Node.js则是一个JavaScript运行环境,非常适合构建实时、高性能的网络应用。结合...

    基于Vue_Express_Mongodb个人家庭财务系统设计毕业源码案例设计.zip

    Express.js则作为服务器,处理HTTP请求,与MongoDB数据库交互,实现数据的增删改查操作。可能的应用功能包括: 1. 用户登录注册:使用session或JWT(JSON Web Tokens)进行身份验证。 2. 财务记录管理:添加、编辑...

    Mongodb连接池、增删改查实例套装

    "Mongodb连接池、增删改查实例套装"是针对初学者的教程资源,旨在帮助他们掌握MongoDB的基础操作和最佳实践。以下是这些实例中可能涉及的关键知识点: 1. **MongoDB连接池**: - **连接池概念**:连接池是管理...

    使用C#访问MongoDB实现简单增删改查

    本教程将详细介绍如何使用C#访问MongoDB,实现基本的增删改查操作。 首先,我们需要在C#项目中引入MongoDB的驱动程序。MongoDB官方提供了`MongoDB.Driver`库,可以通过NuGet包管理器安装。在Visual Studio中,右键...

    mongodb数据库增删改查

    在Java应用程序中,我们可以使用MongoDB Java驱动程序来与MongoDB进行交互,执行基本的数据库操作,如增(添加)、删(删除)、改(更新)和查(查询)。下面将详细介绍这些操作。 1. 添加(Add) 要向MongoDB集合...

    nodejs+express+mongodb 博客系统增删改查完整版

    3. **MongoDB**: MongoDB是一个NoSQL文档型数据库,以其灵活性、高性能和易扩展性而知名。在这个项目中,MongoDB用于存储用户信息、博客文章和其他相关数据。"blog"是数据库的名称。 4. **EJS**: EJS(Embedded ...

Global site tag (gtag.js) - Google Analytics