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

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

分享到:
评论

相关推荐

    MONGOdb视频教程地址.txt

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

    MongoDB java使用文档

    MongoDB实现增删改查,java程序驱动,复杂查询,源代码示例

    java mongodb 增删改查demo

    java对mongodb数据库的增删改查测试demo。可直接运行,需要自己安装mongodb数据库,需要手动添加bins包下面的jdbc的jar包和junit4的jar包。包含自己写的mongodb安装文档。

    基于Html的crud-express-mongodb增删改查设计源码

    本源码提供了一个基于Html的crud-express-mongodb增删改查设计。项目包含1586个文件,其中包括928个JavaScript文件、193个Markdown文档、138个JSON文件、71个Less样式文件、21个TypeScript文件、19个YAML文件、15个...

    ypjh001#-#03.mongoDB增删改查操作2

    1. 库和集合的基础命令 1. 库级命令 2. 表(集合)级命令 1. 增加一个文档 2. 一次增加多个文档 1. 赋值表达式 2. 修改选项 1. 字段值查询

    MongoDB笔记.docx

    四、MongoDB得增删改查(crud) 4 1、MongoDB查询 4 2、order和投影查询 5 3、MongoDB增加 6 4、MongoDB修改 7 5、MongoDB删除 9 6、MongoDB分页 10 7、MongoDB模糊查询和其他条件查询 12 五、Mongoose(node使用)...

    Mongodb数据库JAVA操作例子

    Mongodb 数据库 JAVA 增删改查操作例子

    MongoDB 数据库创建删除、表(集合)创建删除、数据增删改查2

    1、连接数据库 1、使用数据库、创建数据库 2、查看数据库 3、显示当前的数据集合(mysql 中叫表) 4、删除集合,删除指定的集合 5、删除数据库,删除当前

    mongoDB数据库的增删改查,以及所需要的配置.zip

    在MongoDB中,数据是以文档的形式存储的,文档是一个键值对的集合,并且文档支持嵌套和数组。MongoDB中的一个文档相当于关系型数据库中的一行,多个文档构成了集合(collection),集合类似于关系型数据库中的表。 ...

    MongoDB 分享文档

    MongoDB的安装,增、删、改、查,MongoDB和传统数据库对比,以及对sql的对比

    mongodb操作文档.doc

    mongodb的常用增删改查,投影、排序、统计、消除重复、各种聚合查询、索引、Python操作mongodb

    mongodb(一).md

    数据库mongodb的学习,如何安装mongodb 以及可视化的操作MongoDB数据库,实现增删改查,使用robo 3t实现数据库的可视化操作

    MongoDB入门笔记

    用MindMaster以脑图形式,记录对MongoDB的简单操作和...3.MongoDB对文档的增删改查、索引、聚合 4.用Java操作MongoDB(最简单操作,没有很复杂的情况) 5.适用图形化工具操作MongoDB(Robot3T,最简单的连接,操作)

    mongodb增删改查详解_动力节点Java学院整理

    上一篇也说过,文档是采用“K-V”格式存储的,如果大家对JSON比较熟悉的话,我相信学mongodb是手到擒来,我们知道JSON里面Value 可能是“字符串”,可能是“数组”,又有可能是内嵌的一个JSON对象,相同的方式也适合...

    基于MongoDb的图书管理系统.rar

    本系统是本人初学MongoDb时所写,代码不是很完美,基本实现图书管理系统的增删改查等基本功能,目前尚有一处缺陷未解决——在查询后只能在控制台看到结果,没有反馈到界面上,有兴趣的朋友可以加以修改,相信这是一...

    Node.js对MongoDB进行增删改查操作的实例代码

    MongoDB是一个开源的、文档型的NoSQL数据库程序。MongoDB将数据存储在类似JSON的文档中,操作起来更灵活方便。NoSQL数据库中的文档(documents)对应于SQL数据库中的一行。将一组文档组合在一起称为集合(collections)...

    MongoDB数据库文档操作方法(必看篇)

    本文将详细介绍MongoDB数据库关于文档的增删改查 如果数据库中不存在集合,则MongoDB将创建此集合,然后将文档插入到该集合中 要在单个查询中插入多个文档,可以在insert()命令中传递文档数组 可以使用js语法,...

    mongodb(四).md

    使用express连接MongoDB,实现数据库的连接使用,通过向后端发送请求实现数据库内容的增删改查,对数据进行处理

    java操作mongodb

    文档详细介绍用java如何操作mongodb,包括增、删、改、各种查询的介绍。十分好的mongodb入门资料。

    Android编程连接MongoDB及增删改查等基本操作示例

    本文实例讲述了Android编程连接MongoDB及增删改查等基本操作。分享给大家供大家参考,具体如下: MongoDB简介 Mongodb,分布式文档存储数据库,由C++语言编写,旨在为WEB应用提供可扩展的高性能数据存储解决方案。...

Global site tag (gtag.js) - Google Analytics