MongoDB 基本操作(增改删)
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 基本操作(增改删)的更多相关文章
- XML简单的增改删操作
XML文件的简单增改删,每一个都可以单独拿出来使用. 新创建XML文件,<?xmlversion="1.0"encoding="utf-8"?> & ...
- js 属性增改删操作
js 属性增改删操作,可参看菜鸟教程,这里记录一个小问题:disabled属性 使用setAttribute操作无法 禁用disabled属性,需使用removeAttribute操作,原因是只要有d ...
- DataFrame查增改删
DataFrame查增改删 查 Read 类list/ndarray数据访问方式 dates = pd.date_range(',periods=10) dates df = pd.DataFrame ...
- MongoDB的增、删、改、查操作(五)
按照我们关系型数据库的思想,一个服务器要想存放数据,首先要有数据库,表,字段,约束,当然了也少不了主键,外键,索引,关系等: 但是在MongoDB的世界里边,我们不用预先的去创建这些信息从而直接来使用 ...
- EF基本操作增、删、查、改、分页,join……等
一.批量添加数据 static void Main(string[] args) { add(); add2(); Console.ReadKey(); } static void add() { D ...
- MongoDB基本操作(增删改查)
基本操作 基本的“增删查改“,在DOS环境下输入mongo命令打开shell,其实这个shell就是mongodb的客户端,同时也是一个js的编译器,默认连接的是“test”数据库.
- python数据类型—列表(增改删查,统计,取值,排序)
列表是最常用的数据类型之一,通过列表可以对数据实现方便的存储,修改等操作. 先声明一个空列表: >>> names = [] >>> names [] 可以存多个值 ...
- oracle函数自治事务解决不能增改删的语句操作
CREATE OR REPLACE FUNCTION SEQ3 (v_bname in VARCHAR2) return NUMBER is pragma autonomous_transaction ...
- EF6增改删等常用基类
using System; using System.Linq; using System.Threading.Tasks; using System.Linq.Expressions; using ...
随机推荐
- 超级POM
在一个有POM的文件夹下执行: mvn help:effective-pom 会输出一个超级POM文件,可以就该文件,进行分析.
- CF506E Mr. Kitayuta's Gift
这道题神仙到让我面临着买不到冰皮月亮蛋糕的风险来写题解 (蛋糕真好吃呜呜呜) 这篇题解参考了CQzhangyu神仙的做法. (目测比标程科学好写) 限制是要回文,根据我们做字符串计数的常识,一定是尽量 ...
- 借助tcpdump统计http请求
借助tcpdump统计http请求 这里所说的统计http请求,是指统计QPS(每秒请求数),统计前十条被访问最多的url.一般做这样的统计时,我们经常会使用网站访问日志来统计.当我们来到一个 ...
- [POI2017] Flappy Bird
问题描述 <飞扬的小鸟>是一款风靡的小游戏.在游戏中,小鸟一开始位于(0,0)处,它的目标是飞到横坐标为X的某个位置上.每一秒,你可以选择点击屏幕,那么小鸟会从(x,y)飞到(x+1,y+ ...
- 【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 ...
- Spark--wordcount(词频降序)
import org.apache.spark.{SparkConf, SparkContext} object wc2 { def main(args: Array[String]): Unit = ...
- 面试题常考&必考之--js闭包特性和优缺点 (外加小例子)
当内部函数被返回到外部并保存时,一定会产生闭包.闭包会产生原来的作用域链,不释放. 闭包,可以理解为,写一个函数,然后产生闭包的这种现象. 概念: 基础: 主要是:add reduce 被返回 ...
- Oracle的分页和MySQL的分页
Oracle的分页: select * from ( select rownum r,a from tabName where rownum <= 20 ) where r > 10 使用 ...
- 【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 ...
- BZOJ 4939: [Ynoi2016]掉进兔子洞(莫队+bitset)
传送门 解题思路 刚开始想到了莫队+\(bitset\)去维护信息,结果发现空间不太够..试了各种奇技淫巧都\(MLE\),最后\(\%\)了发题解发现似乎可以分段做..这道题做法具体来说就是开\(3 ...