1、插入数据

  和关系型数据库一样,增加数据记录可以使用insert语句,这是很简单的。

  • 当插入数据时,如果此集合不存在,则MongoDB系统会自动创建一个集合,即不需要刻意预先创建集合
  • 每次插入数据时,如果没有显示指定字段"_id",则系统会自动为我们加入"_id"(为_id是系统默认生成的一个唯一索引)。_id是OBjectId类型的,其中ObjectId类型的值是由12个字节组成的,前4个字节表示的是一个时间戳(精确的秒),紧接着3个字节表示的是机器唯一标识,接下来2个字节表示的是进程的id,最后的3个字节表示的是一个随机的计数器。
  • 插入数据时_id字段不能重复,否则将发生异常。

例子:

> db.czx.insert({name:"zhangsan",age:20,sex:"male",tel:"12345678901"})
WriteResult({ "nInserted" : 1 })

> db.czx.find().pretty()
{
"_id" : ObjectId("593670d861dce208b23fc30c"),
"name" : "zhangsan",
"age" : 20,
"sex" : "male",
"tel" : "12345678901"
}

当然,mongodb shell也是支持批插入的(我们可以通过循环插入),insert与save()区别:当遇到_id相同的情况下,save完成保存操作,而insert将会报错

2、修改数据

  修改数据是由update来完成的,修改数据分两种:一种是只是针对具体的目标字段,其它部分不变;另一种是取代性的更改,即修改具体目标字段后,其他的字段会被删除。update用于已存在的集合。

db.collection.update(<query>,<update>,{upsert:<boolean>,multi:<boolean >,writeConcern: <document>})

参数说明:

  • query : update的查询条件
  • update : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的
  • upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
  • multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
  • writeConcern :可选,抛出异常的级别。

测试例子:

> db.czx.insert({name:"zhangsan",age:20,sex:"male",tel:"12345678901"})
WriteResult({ "nInserted" : 1 })

> db.czx.find().pretty()
{
"_id" : ObjectId("593670d861dce208b23fc30c"),
"name" : "zhangsan",
"age" : 20,
"sex" : "male",
"tel" : "12345678901"
}

  a、更改指定的字段

> db.czx.update({name:"zhangsan"},{$set:{name:"czx"},$inc:{age:19}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

> db.czx.find().pretty()
{
"_id" : ObjectId("593670d861dce208b23fc30c"),
"name" : "czx",
"age" : 39,
"sex" : "male",
"tel" : "12345678901"
}

  b、更改指定字段并且删除其他字段

> db.czx.update({name:"czx"},{name:"sb"})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.czx.find().pretty()
{ "_id" : ObjectId("593670d861dce208b23fc30c"), "name" : "sb" }

  c、更改多个文档的指定字段

> db.czx.find()
{ "_id" : ObjectId("593678aa61dce208b23fc30d"), "name" : "zhangsan", "age" : 20, "sex" : "male", "tel" : "12345678901" }
{ "_id" : ObjectId("593678f661dce208b23fc30e"), "name" : "sb", "age" : 20, "sex" : "male", "tel" : "12345678901" }
> db.czx.update({age:20},{$set:{age:21}},{multi:true})
WriteResult({ "nMatched" : 2, "nUpserted" : 0, "nModified" : 2 })
> db.czx.find()
{ "_id" : ObjectId("593678aa61dce208b23fc30d"), "name" : "zhangsan", "age" : 21, "sex" : "male", "tel" : "12345678901" }
{ "_id" : ObjectId("593678f661dce208b23fc30e"), "name" : "sb", "age" : 21, "sex" : "male", "tel" : "12345678901" }

  d、当指定文档找不到时插入新文档

> db.czx.find()
{ "_id" : ObjectId("593678aa61dce208b23fc30d"), "name" : "zhangsan", "age" : 21, "sex" : "male", "tel" : "12345678901" }
{ "_id" : ObjectId("593678f661dce208b23fc30e"), "name" : "sb", "age" : 21, "sex" : "male", "tel" : "12345678901" }
> db.czx.update({name:"czx"},{$set:{age:20}},{upsert:true})
WriteResult({
"nMatched" : 0,
"nUpserted" : 1,
"nModified" : 0,
"_id" : ObjectId("593679b48bdb7d097ff6e2ce")
})
> db.czx.find()
{ "_id" : ObjectId("593678aa61dce208b23fc30d"), "name" : "zhangsan", "age" : 21, "sex" : "male", "tel" : "12345678901" }
{ "_id" : ObjectId("593678f661dce208b23fc30e"), "name" : "sb", "age" : 21, "sex" : "male", "tel" : "12345678901" }
{ "_id" : ObjectId("593679b48bdb7d097ff6e2ce"), "name" : "czx", "age" : 20 }

3、删除数据

删除数据用remove语句

>db.collection.remove(<query>,<justOne>)

  • query参数为可选的参数,查询选择器。
  • justOne也是可选的参数,是一个boolean类型的值,表示是否只删除匹配的第一个文档

  如果remove没有指定任何参数,它将删除集合中所有文档,但并不会删除集合对应的索引数据,如果想删除集合中所有的文档,同事也删除集合中的索引,我们可以使用MongoDB提供的drop方法。当用remove删除文档后,文档对象也会从磁盘上相应的数据文件中删去数据。

MongoDB 基本操作(增改删)的更多相关文章

  1. XML简单的增改删操作

    XML文件的简单增改删,每一个都可以单独拿出来使用. 新创建XML文件,<?xmlversion="1.0"encoding="utf-8"?> & ...

  2. js 属性增改删操作

    js 属性增改删操作,可参看菜鸟教程,这里记录一个小问题:disabled属性 使用setAttribute操作无法 禁用disabled属性,需使用removeAttribute操作,原因是只要有d ...

  3. DataFrame查增改删

    DataFrame查增改删 查 Read 类list/ndarray数据访问方式 dates = pd.date_range(',periods=10) dates df = pd.DataFrame ...

  4. MongoDB的增、删、改、查操作(五)

    按照我们关系型数据库的思想,一个服务器要想存放数据,首先要有数据库,表,字段,约束,当然了也少不了主键,外键,索引,关系等: 但是在MongoDB的世界里边,我们不用预先的去创建这些信息从而直接来使用 ...

  5. EF基本操作增、删、查、改、分页,join……等

    一.批量添加数据 static void Main(string[] args) { add(); add2(); Console.ReadKey(); } static void add() { D ...

  6. MongoDB基本操作(增删改查)

    基本操作      基本的“增删查改“,在DOS环境下输入mongo命令打开shell,其实这个shell就是mongodb的客户端,同时也是一个js的编译器,默认连接的是“test”数据库.  

  7. python数据类型—列表(增改删查,统计,取值,排序)

    列表是最常用的数据类型之一,通过列表可以对数据实现方便的存储,修改等操作. 先声明一个空列表: >>> names = [] >>> names [] 可以存多个值 ...

  8. oracle函数自治事务解决不能增改删的语句操作

    CREATE OR REPLACE FUNCTION SEQ3 (v_bname in VARCHAR2) return NUMBER is pragma autonomous_transaction ...

  9. EF6增改删等常用基类

    using System; using System.Linq; using System.Threading.Tasks; using System.Linq.Expressions; using ...

随机推荐

  1. Python---面向对象编程---自定义列表和集合操作类

    一.定义一个列表的操作类Listinfo 包括的方法 1.列表元素添加:add_key()  添加的必须是数字或者是字符串 2.列表元素取值:get_key() 3.列表合并:update_list( ...

  2. vue中的v-model原理,与组件自定义v-model

    VUE中的v-model可以实现双向绑定,但是原理是什么呢?往下看看吧 根据官方文档的解释,v-model其实是一个语法糖,它会自动的在元素或者组件上面解析为 :value="" ...

  3. 前端面试题常考&必考之--盒子模型和box-sizing(项目中经常使用)

    主要考察width的值,包括padding\border\content等属性??? box-sizing属性是css3特有的哦*** 1>当box-sizing:content-box;时,跟 ...

  4. System.currentTimeMillis和System.nanoTime()

    ns(nanosecond):纳秒, 时间单位.一秒的10亿分之一,即等于10的负9次方秒.常用作 内存读写速度的单位.  1纳秒=0.000001 毫秒  1纳秒=0.00000 0001秒 jav ...

  5. Spring read-only="true" 只读事务的一些概念

    概念:从这一点设置的时间点开始(时间点a)到这个事务结束的过程中,其他事务所提交的数据,该事务将看不见!(查询中不会出现别人在时间点a之后提交的数据) 应用场合: 如果你一次执行单条查询语句,则没有必 ...

  6. CSS的一些单位,如rem、px、em、vw、vh、vm

    总结了一下一些单位的不同 px:像素(pixel)相对长度单位,,是相对于屏幕显示器分辨率而言的: em:em的值并不是固定的,会集成父级元素的字体大小: 注意: 1.body选择其中声明Font-s ...

  7. Mac sublime安装package controller

    https://packagecontrol.io/installation#st2  链接被墙了这个. 我拿来放在这里. The simplest method of installation is ...

  8. Understanding RequireJS for Effective JavaScript Module Loading

    Modular programming is used to break large applications into smaller blocks of manageable code. Modu ...

  9. AtomicIntegerArray 源码分析

    AtomicIntegerArray AtomicIntegerArray 能解决什么问题?什么时候使用 AtomicIntegerArray? 可以用原子方式更新其元素的 int 数组 如何使用 A ...

  10. Tomcat/weblogic session失效时间的几种设置方法

    一.在容器中设置tomcat中配置server.xml中定义context时采用如下定义: <Context path="/livsorder" docBase=" ...