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. 超级POM

    在一个有POM的文件夹下执行: mvn help:effective-pom 会输出一个超级POM文件,可以就该文件,进行分析.

  2. CF506E Mr. Kitayuta's Gift

    这道题神仙到让我面临着买不到冰皮月亮蛋糕的风险来写题解 (蛋糕真好吃呜呜呜) 这篇题解参考了CQzhangyu神仙的做法. (目测比标程科学好写) 限制是要回文,根据我们做字符串计数的常识,一定是尽量 ...

  3. 借助tcpdump统计http请求

    借助tcpdump统计http请求     这里所说的统计http请求,是指统计QPS(每秒请求数),统计前十条被访问最多的url.一般做这样的统计时,我们经常会使用网站访问日志来统计.当我们来到一个 ...

  4. [POI2017] Flappy Bird

    问题描述 <飞扬的小鸟>是一款风靡的小游戏.在游戏中,小鸟一开始位于(0,0)处,它的目标是飞到横坐标为X的某个位置上.每一秒,你可以选择点击屏幕,那么小鸟会从(x,y)飞到(x+1,y+ ...

  5. 【leetcode】1147. Longest Chunked Palindrome Decomposition

    题目如下: Return the largest possible k such that there exists a_1, a_2, ..., a_k such that: Each a_i is ...

  6. Spark--wordcount(词频降序)

    import org.apache.spark.{SparkConf, SparkContext} object wc2 { def main(args: Array[String]): Unit = ...

  7. 面试题常考&必考之--js闭包特性和优缺点 (外加小例子)

    当内部函数被返回到外部并保存时,一定会产生闭包.闭包会产生原来的作用域链,不释放. 闭包,可以理解为,写一个函数,然后产生闭包的这种现象. 概念: 基础: 主要是:add    reduce  被返回 ...

  8. Oracle的分页和MySQL的分页

    Oracle的分页: select * from ( select rownum r,a from tabName where rownum <= 20 ) where r > 10 使用 ...

  9. 【CF10D】LCIS(LCIS)

    题意:求两个序列的LCIS n,m<=300,a[i]<=1e9 题意:O(n^2) O(n^3)的话设dp[i,j]为A终点为a[1..i]且B终点为b[j]的最大长度,分a[i]==b ...

  10. BZOJ 4939: [Ynoi2016]掉进兔子洞(莫队+bitset)

    传送门 解题思路 刚开始想到了莫队+\(bitset\)去维护信息,结果发现空间不太够..试了各种奇技淫巧都\(MLE\),最后\(\%\)了发题解发现似乎可以分段做..这道题做法具体来说就是开\(3 ...