1.简介

1.什么是mongoDB?

        MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。 在高负载的情况下,添加更多的节点,可以保证服务器性能。
MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。
MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。

2.MongoDB的特性:

        MongoDB是一个可扩展、高性能的下一代数据库,它的特点是高性能、易部署、易使用、存储数据方便,主要特性有:
• 面向文档存储,json格式的文档易读、高效;
• 模式自由,支持动态查询、完全索引,无模式;
• 高效的数据存储,效率提高;
• 支持复制和故障恢复;
• 以支持云级别的伸缩性,支持水平数据库集群,可动态添加额外服务器;

3.MongoDB的工作方式

传统的关系型数据库一般有数据库(database)、表(table)、记录(record)三级层次构成。
MongoDB同样是由数据库(database)、集合(collection)、文档对象(documen)三个层次组成。
文档 类似于json的键值对。{"name":"tom","age":23}
集合 一组文档的集合。
#局限与不足:
       
 32位系统上,不支持大于2.5G的数据。
        
单个文档大小限制为16M。
        
锁粒度太粗,MongoDB使用一把全局读写锁。
        
不支持join操作和事务机制
        
对内存要求比较大,至少要保证热数据(索引,数据及系统其他开销)都能装进内存
        
用户权限方面较弱
        
MapReduce在单个实例上无法运行,可用Auto-Sharding实现,是由JS引擎限制造成。
       
 MapReduce的结果无法写入到一个被Sharding的collection中,待后续版本解决
        
对于数组型的数据操作不够丰富

4.MongoDB的数据类型

null

布尔 ture|false
整数 123
浮点 12.3
字符串 “hello world”
对象ID 用 new ObjectId()来申明。
日期 用 new Date()来申明时间戳
数组 [“apple”,”blanan”,”pear”]
内嵌文档 {“username” : “jone”, “age”: 13, “contact” : {“home”:”123”,”
moblie”:”456”}}
RegExp 正则表达式 /[a-z]/

5.MongoDB 与 TRDB 数据库基本概念比较

MongoDB:数据库 DB,集合,文档,键值对;

TRDB:数据库 DB,表,行,字段值;

区别:

1.都有数据库概念, 需要用命令建立数据库名。 如根据不同项目建立两 个数据 库名, 一个为 test 数据库, 用于测试; 一个为 goodsdb 数据 库, 用于正式业 务数据存储及操作。

2.一个集合对应于一个表。 MongoDB 无须事先定义表结构, TRDB 必须 事先强制定义。

3.每个文档都有一个特殊的_id , _id 值在文档所属集合中是唯一的, 默认 由MongoDB 自己维护, 当然也可以由程序员编程指定。 一个文档类似 于TRDB —行记录, 文档要避免不同集合的关联关系( Join ) , 而 以 行为 基 础>的 TRDB 强调关联关系。

4.文档的一个键值对类似于 TRDB 里的一个字段值。 不过文档里的值可以 嵌入更复杂的数据结构。

2.安装

rpm方式安装:

(1):先配置mongodb源:

[mongo]
name=mongo
baseurl=https://mirrors.aliyun.com/mongodb/yum/redhat/7/mongodb-org/4.4/x86_64/
gpgcheck=0
enable=1

常规操作:yum clean all / yum makecache;

(2):下载mongodb:

[root@manager ~]# yum install -y mongodb

查看下载列表并下载cli,server,arg:

[root@manager ~]# yum install -y mongocli[root@manager ~]# yum install -y mongodb-org[root@manager ~]# yum install -y mongodb-org-server

(3):安装完成后,启动mongo服务:

[root@manager ~]# systemctl start mongod
[root@manager ~]#

(4):打开mongo:

[root@manager ~]# mongo

源码安装:

(1):下载软件包:

[root@localhost ~]# wget https://fastdl.mongodb.org/linux/mongodb- linux-x86_64-rhel70-4.4.14.tgz

(2):解压到指定路径:

[root@localhost ~]# tar xf mongodb-linux-x86_64-rhel70-3.4.7.tgz -C /usr/local/

(3):参照rpm方式配置文件创建对应的用户,目录,文件,日志,以及脚本文件;

[root@manager ~]# ll /var/log/mongodb/mongod.log
-rw-r-----. 1 mongod mongod 154179 Sep 20 20:25 /var/log/mongodb/mongod.log[root@manager ~]# ll -d /var/lib/mongo
drwxr-xr-x. 4 mongod mongod 4096 Sep 20 20:25 /var/lib/mongo[root@manager ~]# ll /var/run/mongodb/mongod.pid
-rw-r--r--. 1 mongod mongod 4 Sep 20 19:40 /var/run/mongodb/mongod.pid[root@manager ~]# ll -d /usr/share/zoneinfo[root@manager ~]# grep mongod /etc/passwd
mongod:x:997:995:mongod:/var/lib/mongo:/bin/false[root@manager ~]# grep mongod /etc/group
mongod:x:995:[root@manager ~]# ll /usr/lib/systemd/system/mongod.service
-rw-r--r--. 1 root root 971 Aug 16 03:06 /usr/lib/systemd/system/mongod.service[root@manager ~]#

装备就绪之后启动mongod.service,然后再启动mongo,若没有mongo命令,可以做软链接如下:

[root@master ~]# ln -sv /usr/local/mongodb/bin/mongo /usr/bin/mongo

再次使用mongo登录即可!!

3.MongoDB连接

(1):使用工具Navicat即可进行管理,但是目前还需要修改配置IP,如下所示:

net:port: 27017bindIp: 192.168.188.127

# :修改本机IP或者是0.0.0.0都可以;

(2):navicat的下载安装,破解:

Navicat | 下载 Navicat Premium 14 天免费 Windows、macOS 和 Linux 的试用版

4.基本操作,基本命令

(1):帮助:

帮助:
help
db.help();
db.yourColl.help();
db.youColl.find().help();
rs.help();

(2):创建数据库,如果没有哦数据库,则创建数据库,否则切换到指定的数据库;

> use mydb
switched to db mydb
> db
mydb
>

# :db命令用来展示当前使用呢的是哪个数据库;

(3):查询所有数据库:

> show dbs;     //查询所有数据库
> db.stats();    //帮助
> db            // 当前库,等价于 db.getName()

(4):删除数据库:

删除当前数据库,可以搭配使用db来查看当前数据库名;

> db
db1
> db.dropDatabase()
{ "ok" : 1 }
> show dbs
admin    0.000GB
config   0.000GB
local    0.000GB
student  0.000GB
> 

#:需要严格区分大小写;

(5):创建集合:

db.createCollection(name, {capped: <Boolean>, autoIndexId: <Boolean>, size: <number>, max <number>} )

# :name:集合的名字;

capped:是否启用集合限制,如果开启需要制定一个限制条件,默认不使用;

size:限制集合使用空间的大小,默认为没有限制;

max:集合中最大天数限制,默认为没有限制;

autoIndexId:是否使用_id作为索引,默认为使用(true或false),size的优先级比max要高;

例如:

> db.createCollection("books")
{ "ok" : 1 }
> db.getCollectionNames()        // 得到当前db的所有聚集集合
[ "books" ]
> db.getCollection("account")
db1.account// 显示当前db所有聚集索引的状态;
> db.printCollectionStats()// 查看聚集集合的基本信息
> db.books.help()// 查询之前的错误信息// 清除错误记录
> db.resetError();
{ "ok" : 1 }
>

(6):集合基本操作:

查询集合基本操作:// 查看帮助
> db.books.help()// 查询当前集合的数据条数
> db.books.count()
0
> // 查看数据空间的大小
> db.books.dataSize()
0
> // 得到当前聚集集合所在的db
> db.books.getDB()
db1
> // 得到当前聚集集合总大小
> db.books.totalSize()
8192
> // 得到当前聚集集合存储空间大小
> db.books.storageSize()
4096
> // Shard版本信息
> db.books.getShardVersion()
{"configServer" : "","inShardedMode" : false,"mine" : Timestamp(0, 0),"global" : "UNKNOWN","ok" : 1
}
>// 聚集集合重命名
> db.books.renameCollection("BOOK")
{ "ok" : 1 }
>// 删除当前聚集集合
> db.BOOK.drop()
true
> 

(7):文档操作

# :单挑数据:

// 插入文档
MongoDB 使用 insert() 或 save() 方法向集合中插入文档,语法如下:
db.COLLECTION_NAME.insert(document)3.2 版本后还有以下几种语法可用于插入文档:
◇ db.collection.insertOne()        :向指定集合中插入一条文档数据
◇ db.collection.insertMany()       :向指定集合中插入多条文档数据---插入单条文档
--方法一:insert()
> db.student.insert({id:1,name:"张三",sex:"男",age:18})
WriteResult({ "nInserted" : 1 })
>
--方法二:insertOne()
> db.student.insertOne({id:2,name:"李四",sex:"女",age:19})
{"acknowledged" : true,"insertedId" : ObjectId("6329dae25e81be318ba81364")
}
>
--方法三:save()
> db.student.save({id:3,name:"王五",sex:"男",age:19})
WriteResult({ "nInserted" : 1 })
>// 查看集合中文档数据:
> db.student.find()
{ "_id" : ObjectId("6329da7c5e81be318ba81363"), "id" : 1, "name" : "张三", "sex" : "男", "age" : 18 }
{ "_id" : ObjectId("6329dae25e81be318ba81364"), "id" : 2, "name" : "李四", "sex" : "女", "age" : 19 }
{ "_id" : ObjectId("6329dd545e81be318ba81365"), "id" : 3, "name" : "王五", "sex" : "男", "age" : 19 }
>

#:插入多条数据

方法一:insertMany
> db.student.insertMany(
... [{id:4,name:"赵六",sex:"男",age:21}],
... [{id:5,name:"钱七",sex:"女",age:20}]
... )
{"acknowledged" : true,"insertedIds" : [ObjectId("6329dee05e81be318ba81366")]
}
> 

#:插入多维数据:

> db.student.insertMany( [{id:6,name:"孙八",sex:"男",age:21,address:{province:"Hebei",city:"tangshan"}},{id:7,name:"侯九",sex:"男",age:20,address:{province:"beijing",city:"gugong"}},{id:8,name:"熊十",sex:"女",age:21,address:{province:"xian",city:"changan"}}] )
{"acknowledged" : true,"insertedIds" : [ObjectId("6329e2445e81be318ba81367"),ObjectId("6329e2445e81be318ba81368"),ObjectId("6329e2445e81be318ba81369")]
}
> db.student.find()
{ "_id" : ObjectId("6329da7c5e81be318ba81363"), "id" : 1, "name" : "张三", "sex" : "男", "age" : 18 }
{ "_id" : ObjectId("6329dae25e81be318ba81364"), "id" : 2, "name" : "李四", "sex" : "女", "age" : 19 }
{ "_id" : ObjectId("6329dd545e81be318ba81365"), "id" : 3, "name" : "王五", "sex" : "男", "age" : 19 }
{ "_id" : ObjectId("6329dee05e81be318ba81366"), "id" : 4, "name" : "赵六", "sex" : "男", "age" : 21 }
{ "_id" : ObjectId("6329e2445e81be318ba81367"), "id" : 6, "name" : "孙八", "sex" : "男", "age" : 21, "address" : { "province" : "Hebei", "city" : "tangshan" } }
{ "_id" : ObjectId("6329e2445e81be318ba81368"), "id" : 7, "name" : "侯九", "sex" : "男", "age" : 20, "address" : { "province" : "beijing", "city" : "gugong" } }
{ "_id" : ObjectId("6329e2445e81be318ba81369"), "id" : 8, "name" : "熊十", "sex" : "女", "age" : 21, "address" : { "province" : "xian", "city" : "changan" } }
>

#:数组信息添加

> db.student.insertMany( [{id:9,name:"吴京",sex:"男",age:43,address:{province:"北京",city:"北京"},hobby:["mail","fight","sing"]},] )
{"acknowledged" : true,"insertedIds" : [ObjectId("6329e3e35e81be318ba8136b")]
}
> db.student.find()
{ "_id" : ObjectId("6329da7c5e81be318ba81363"), "id" : 1, "name" : "张三", "sex" : "男", "age" : 18 }
{ "_id" : ObjectId("6329dae25e81be318ba81364"), "id" : 2, "name" : "李四", "sex" : "女", "age" : 19 }
{ "_id" : ObjectId("6329dd545e81be318ba81365"), "id" : 3, "name" : "王五", "sex" : "男", "age" : 19 }
{ "_id" : ObjectId("6329dee05e81be318ba81366"), "id" : 4, "name" : "赵六", "sex" : "男", "age" : 21 }
{ "_id" : ObjectId("6329e2445e81be318ba81367"), "id" : 6, "name" : "孙八", "sex" : "男", "age" : 21, "address" : { "province" : "Hebei", "city" : "tangshan" } }
{ "_id" : ObjectId("6329e2445e81be318ba81368"), "id" : 7, "name" : "侯九", "sex" : "男", "age" : 20, "address" : { "province" : "beijing", "city" : "gugong" } }
{ "_id" : ObjectId("6329e2445e81be318ba81369"), "id" : 8, "name" : "熊十", "sex" : "女", "age" : 21, "address" : { "province" : "xian", "city" : "changan" } }
{ "_id" : ObjectId("6329e3ce5e81be318ba8136a"), "id" : 9, "name" : "吴京", "sex" : "男", "age" : 43, "address" : { "province" : "北京", "city" : "北京" }, "hobby" : [ "mail", "fight", "sing" ] }
>

(8):数据查询:

// 查询全部
> db.student.find()//查询单条数据,从第一条开始:
> db.student.findOne()
{"_id" : ObjectId("6329da7c5e81be318ba81363"),"id" : 1,"name" : "张三","sex" : "男","age" : 18
}
>// 限制条件查询
db.数据表.find(条件)
db.数据表.findOne(条件)> db.student.find({id:2})
{ "_id" : ObjectId("6329dae25e81be318ba81364"), "id" : 2, "name" : "李四", "sex" : "女", "age" : 19 }
>
> db.student.find({id:2}).pretty()
{"_id" : ObjectId("6329dae25e81be318ba81364"),"id" : 2,"name" : "李四","sex" : "女","age" : 19
}// 范围条件查询:$gt $lt $gte $lte 表示大于、小于、大于等于、小于等于小于示例:
> db.student.find({"age":{$lt:20}}).pretty()
{"_id" : ObjectId("6329da7c5e81be318ba81363"),"id" : 1,"name" : "张三","sex" : "男","age" : 18
}
{"_id" : ObjectId("6329dae25e81be318ba81364"),"id" : 2,"name" : "李四","sex" : "女","age" : 19
}
{"_id" : ObjectId("6329dd545e81be318ba81365"),"id" : 3,"name" : "王五","sex" : "男","age" : 19
}
> 大于示例:
> db.student.find({"age":{$gt:20}}).pretty()
{"_id" : ObjectId("6329dee05e81be318ba81366"),"id" : 4,"name" : "赵六","sex" : "男","age" : 21
}
{"_id" : ObjectId("6329e2445e81be318ba81367"),"id" : 6,"name" : "孙八","sex" : "男","age" : 21,"address" : {"province" : "Hebei","city" : "tangshan"}
}
{"_id" : ObjectId("6329e2445e81be318ba81369"),"id" : 8,"name" : "熊十","sex" : "女","age" : 21,"address" : {"province" : "xian","city" : "changan"}
}
{"_id" : ObjectId("6329e3ce5e81be318ba8136a"),"id" : 9,"name" : "吴京","sex" : "男","age" : 43,"address" : {"province" : "北京","city" : "北京"},"hobby" : ["mail","fight","sing"]
}
{"_id" : ObjectId("6329e3e35e81be318ba8136b"),"id" : 9,"name" : "吴京","sex" : "男","age" : 43,"address" : {"province" : "北京","city" : "北京"},"hobby" : ["mail","fight","sing"]
}
>大于等于示例:
> db.student.find({"age":{$gte:20}}).pretty()小于等于示例:
> db.student.find({"age":{$lte:20}}).pretty()等于示例:
> db.student.find({"age":20}).pretty();
{"_id" : ObjectId("6329e2445e81be318ba81368"),"id" : 7,"name" : "侯九","sex" : "男","age" : 20,"address" : {"province" : "beijing","city" : "gugong"}
}
> 不等于示例:
> db.student.find({"age":{$ne:20}}).pretty()

#:查询年龄大于四十岁

> db.student.find({"age":{$gt:40}})
{ "_id" : ObjectId("6329e3ce5e81be318ba8136a"), "id" : 9, "name" : "吴京", "sex" : "男", "age" : 43, "address" : { "province" : "北京", "city" : "北京" }, "hobby" : [ "mail", "fight", "sing" ] }
>

(9):设置多个查询条件

        并且(与) db . 数据表 . find ( { 条件 , 条件 , 条件 } ) . pretty ( )
        OR          条件语句使用了关键字 $or,语法格式如下:
        db.数据表.find ( {  $or :  [ { 条件 } , { 条件 } , { 条件 } ] } ) . pretty ( )
// 查询年龄大于等于20岁小于等于30岁> db.student.find({"age":{$gte:20,$lte:30}})
{ "_id" : ObjectId("6329dee05e81be318ba81366"), "id" : 4, "name" : "赵六", "sex" : "男", "age" : 21 }
{ "_id" : ObjectId("6329e2445e81be318ba81367"), "id" : 6, "name" : "孙八", "sex" : "男", "age" : 21, "address" : { "province" : "Hebei", "city" : "tangshan" } }
{ "_id" : ObjectId("6329e2445e81be318ba81368"), "id" : 7, "name" : "侯九", "sex" : "男", "age" : 20, "address" : { "province" : "beijing", "city" : "gugong" } }
{ "_id" : ObjectId("6329e2445e81be318ba81369"), "id" : 8, "name" : "熊十", "sex" : "女", "age" : 21, "address" : { "province" : "xian", "city" : "changan" } }
>// 查看姓王的记录> db.student.find({"name":/^王/})
{ "_id" : ObjectId("6329dd545e81be318ba81365"), "id" : 3, "name" : "王五", "sex" : "男", "age" : 19 }
> // 查看姓名里面有王的记录> db.student.find({"name":/王/})
{ "_id" : ObjectId("6329dd545e81be318ba81365"), "id" : 3, "name" : "王五", "sex" : "男", "age" : 19 }
> // 查询指定列name,age数据> db.student.find({id:2},{name:1,age:1})
{ "_id" : ObjectId("6329dae25e81be318ba81364"), "name" : "李四", "age" : 19 }
> #:注意,ID是自动生成的,如果不要显示使用下面的即可;> db.student.find({},{name:1,age:1,_id:0})
{ "name" : "张三", "age" : 18 }
{ "name" : "李四", "age" : 19 }
{ "name" : "王五", "age" : 19 }
{ "name" : "赵六", "age" : 21 }
{ "name" : "孙八", "age" : 21 }
{ "name" : "侯九", "age" : 20 }
{ "name" : "熊十", "age" : 21 }
{ "name" : "吴京", "age" : 43 }
{ "name" : "吴京", "age" : 43 }
>// 按照年龄排序升序:
> db.student.find().sort({age:1})
降序:
> db.student.find().sort({age:-1})//查询前五条数据> db.student.find().limit(5)
{ "_id" : ObjectId("6329da7c5e81be318ba81363"), "id" : 1, "name" : "张三", "sex" : "男", "age" : 18 }
{ "_id" : ObjectId("6329dae25e81be318ba81364"), "id" : 2, "name" : "李四", "sex" : "女", "age" : 19 }
{ "_id" : ObjectId("6329dd545e81be318ba81365"), "id" : 3, "name" : "王五", "sex" : "男", "age" : 19 }
{ "_id" : ObjectId("6329dee05e81be318ba81366"), "id" : 4, "name" : "赵六", "sex" : "男", "age" : 21 }
{ "_id" : ObjectId("6329e2445e81be318ba81367"), "id" : 6, "name" : "孙八", "sex" : "男", "age" : 21, "address" : { "province" : "Hebei", "city" : "tangshan" } }
>// 查询前七条以后的数据> db.student.find().skip(7)//查询在5-8条之间的数据> db.student.find().skip(4).limit(4)// 查询20岁以下的男性> db.student.find({age:{$lt:20},sex:"男"})// 查询年龄小于20岁或女性> db.student.find({age:{$lt:20},sex:"女"})
{ "_id" : ObjectId("6329dae25e81be318ba81364"), "id" : 2, "name" : "李四", "sex" : "女", "age" : 19 }
>//统计男性个数
> db.student.find({sex:"男"}).count()
7
>

(10):多维字段查询

        db.表.find({ ‘key’ :值})
// 查询地址为北京> db.student.find({"address.city":'北京'})
{ "_id" : ObjectId("6329e3ce5e81be318ba8136a"), "id" : 9, "name" : "吴京", "sex" : "男", "age" : 43, "address" : { "province" : "北京", "city" : "北京" }, "hobby" : [ "mail", "fight", "sing" ] }
>

(11):数组条件查询

db.表.find({字段(数组):val}) //数组元素值,有val即可,存在一个元素

// 查找爱好sing的> db.student.find({hobby:'fight'})
{ "_id" : ObjectId("6329e3ce5e81be318ba8136a"), "id" : 9, "name" : "吴京", "sex" : "男", "age" : 43, "address" : { "province" : "北京", "city" : "北京" }, "hobby" : [ "mail", "fight", "sing" ] }
>

db.表.find({字段(数组):{ ‘$all’ :[v1,v2]}}) //数组元素值,存在v1和v2即可,顺序不做要求

// 查找同时喜欢唱歌跳舞> db.student.find({hobdy:{$all:['dance','sing']}})
{ "_id" : ObjectId("59919dabea892d3424c01999"), "id" : 209, "name" : "杨幂", "sex" : "女", "age" : 31, "address" : { "province" : "HongKong", "city" : "HongKong" }, "hobdy" : [ "dance", "shopping", "sing" ] }
{ "_id" : ObjectId("59919dabea892d3424c0199a"), "id" : 210, "name" : "黄渤", "sex" : "男", "age" : 43, "address" : { "province" : "Shandong", "city" : "qingdao" }, "hobdy" : [ "dance", "game", "sing" ] }

(12):限制查询字段:

db.表.find({条件},{字段 :1/0,字段 :1/0})

        1:查询此字段
        0:排除此字段
// 查询age为20岁的学生姓名和年龄> db.student.find({age:20},{name:1,age:1})
{ "_id" : ObjectId("6329e2445e81be318ba81368"), "name" : "侯九", "age" : 20 }
>#注意,设置字段要么都是0,要么都是1,不能既有0又有1,_id除外,可以任意设置。

(13):其他查询:

        $in查询包含的值
        这个与$all不一样,查询的值在$in给出的范围之内就都可以查出来
// 查询年龄在20-23岁方法一:
> db.student.find({age:{$gte:20,$lt:23}},{name:1,age:1,_id:0})
{ "name" : "赵六", "age" : 21 }
{ "name" : "孙八", "age" : 21 }
{ "name" : "侯九", "age" : 20 }
{ "name" : "熊十", "age" : 21 }
> 方法二:
> db.student.find({age:{$in:[20,21,22,23]}},{name:1,age:1,_id:0})
{ "name" : "赵六", "age" : 21 }
{ "name" : "孙八", "age" : 21 }
{ "name" : "侯九", "age" : 20 }
{ "name" : "熊十", "age" : 21 }
> 

(14):查询字段是否存在

        $exists判断字段是否存在
        可以用$exists判断某一字段是否存在
// 查询存在age字段的记录
> db.student.find({age:{$exists:true}})// 查询不存在age字段的记录
> db.student.find({age:{$exists:false}})
        $mod取模运算
        这个操作可以进行模运算。
// age除5余3的记录
> db.student.find({age:{$mod:[5,3]}})

$ne不等于操作

可以查询不等于某一字段的数据

// age不是43岁
> db.student.find({age:{$ne:43}})

$nin不包含操作

这个与$in相反,查询不包含某一字段的记录

$size 数组元素个数

(15):更新文档

        update() 方法
        update() 方法用于更新已存在的文档。语法格式如下:
        db.collection.update(
                <query>,
                <update>,
                {
                        upsert: <boolean>,
                        multi: <boolean>,
                        writeConcern: <document>
                }
        )
参数说明: 
        • query : update的查询条件,类似sql update查询内where后面的。
        • update : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解sql中的update查询内 set后面的。
        • upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认 是false,不插入。
        • multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件 查出来多条记录全部更新。
        • writeConcern :可选,抛出异常的级别。
// 修改文档内容名字:> db.student.update({name:"吴京"},{$set:{name:"张达"}})

db.表.update({条件},{"$set":{字段:值,字段:值}})

db.表.update({条件},{字段:值,字段:值})

有$set的修改:只修改设置的字段,其他字段不变

没有$set的修改:只修改设置的字段,没有修改的字段就删除了(_id除外)

注意:字段有则修改没有则添加新字段

(16):删除数据

删除记录:db.表.remove(条件)

删除字段:db.表.update({条件},{$unset:{字段:1/字段:0}})

> db.student.find({},{_id:0})
{ "id" : 1, "name" : "张三", "sex" : "男", "age" : 18 }
{ "id" : 2, "name" : "李四", "sex" : "女", "age" : 19 }
{ "id" : 3, "name" : "王五", "sex" : "男", "age" : 19 }
{ "id" : 4, "name" : "赵六", "sex" : "男", "age" : 21 }
{ "id" : 6, "name" : "孙八", "sex" : "男", "age" : 21, "address" : { "province" : "Hebei", "city" : "tangshan" } }
{ "id" : 7, "name" : "侯九", "sex" : "男", "age" : 20, "address" : { "province" : "beijing", "city" : "gugong" } }
{ "id" : 8, "name" : "熊十", "sex" : "女", "age" : 21, "address" : { "province" : "xian", "city" : "changan" } }
{ "id" : 9, "name" : "吴京", "sex" : "男", "age" : 43, "address" : { "province" : "北京", "city" : "北京" }, "hobby" : [ "mail", "fight", "sing" ] }
>> db.student.remove({id:9})
WriteResult({ "nRemoved" : 1 })
> db.student.update({id:8},{$unset:{}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 0 })
> db.student.find({},{_id:0})
{ "id" : 1, "name" : "张三", "sex" : "男", "age" : 18 }
{ "id" : 2, "name" : "李四", "sex" : "女", "age" : 19 }
{ "id" : 3, "name" : "王五", "sex" : "男", "age" : 19 }
{ "id" : 4, "name" : "赵六", "sex" : "男", "age" : 21 }
{ "id" : 6, "name" : "孙八", "sex" : "男", "age" : 21, "address" : { "province" : "Hebei", "city" : "tangshan" } }
{ "id" : 7, "name" : "侯九", "sex" : "男", "age" : 20, "address" : { "province" : "beijing", "city" : "gugong" } }
{ "id" : 8, "name" : "熊十", "sex" : "女", "age" : 21, "address" : { "province" : "xian", "city" : "changan" } }
> 

MongoDB---数据类型,集合操作相关推荐

  1. MongoDB常用的操作(服务器、数据库、集合)

    MongoDB常用的操作 前面两篇已经介绍了MongoDB系统架构及其BSON数据类型.本文将讲解基本的MongoDB操作. 一.MongoDB启动命令 启动MongoDB systemctl sta ...

  2. Oracle 语言分类 数据类型 数据类型转换 常用函数 集合操作 子查询

    SQL分类 SQL(Structure Query Language)语言是数据库的核心语言.SQL语言共分为四大类:数据定义语言DDL,数据操纵语言DML,数据查询语言DQL,数据控制语言DCL.1 ...

  3. MongoDB(三):数据库操作、集合操作

    1. 数据库操作 看完前面的文章,大家应该把环境搭建好了,下面我们就开始学习MongoDB的一些基本操作了. 首先我们要了解的一些要点: MongoDB将数据存储为一个文档,数据结构由键值对(key= ...

  4. mongodb常用语句(集合操作)

    mongodb常用语句(集合操作) 查看集合帮助 db.songs.help(); 查看集合总数据量 db.songs.count(); 查看表空间大小 db.songs.dataSize(); 查看 ...

  5. MongoDB入门学习(一)简介与基本操作、整合SpringBoot集合操作、整合SpringBoot文档操作

    文章目录 1. 简介 1.1 NoSQL和MongoDB 1.2 MongoDB特点 1.2.1 MongoDB 技术优势 1.2.2 Json 模型快速特性 1.3 MongoDB 应用场景 1.4 ...

  6. MongoDB (六) MongoDB 集合操作

    一. MongoDB 创建集合 createCollection() 方法 MongoDB db.createCollection(name, options) 是用来创建集合. 语法: 基本的 cr ...

  7. MongoDB 的命令操作

    MongoDB 系列文章: MongoDB 的 yum 安装 MongoDB 的命令操作 MongoDB 的编程操作 在介绍 MongoDB 的具体操作和使用之前,有必要介绍一些 MongoDB 的基 ...

  8. 04 MongoDB各种查询操作 以及聚合操作总结

    基础篇(能解决工作中80%的问题): MongoDB的概述.应用场景.下载方式.连接方式和发展历史等 MongoDB数据类型.重要概念以及shell常用指令 MongoDB文档的各种增加.更新.删除操 ...

  9. Mongodb的索引操作

    Mongodb的索引操作 1. 为什么mongdb需要创建索引 加快查询速度 进行数据的去重 2. mongodb创建简单的索引方法 语法:db.集合名.ensureIndex({属性:1}),1表示 ...

  10. mongodb的聚合操作

    mongodb的聚合操作 1 mongodb的聚合是什么 聚合(aggregate)是基于数据处理的聚合管道,每个文档通过一个由多个阶段(stage)组成的管道,可以对每个阶段的管道进行分组.过滤等功 ...

最新文章

  1. 如何实现phpcms v9_4X版本tag的伪静态?
  2. PC/UVA 110207/10258
  3. is属性用法 vue_Vue中is属性的用法 可以动态切换组件
  4. python使用shell环境变量_linux中添加环境变量(python为例)
  5. div和div之间画横线_HTML如何在两个div标签中间画一条竖线
  6. gnu.getopt java_c – 用于GNU getopt()的-W选项是什么?
  7. 大数据(流量表)任务问题清洗生成新分区表过程
  8. Linux安装使用redis
  9. 2021高考文科成绩怎样查询,2021年本科分数线是多少?如何查询分数
  10. linux内核编程4部曲之一:linux内核编译(2.6.12版本)图文解说
  11. php获取 微信unionid,微信授权登录获取openId和unionId
  12. 2021.10.07高一Python语法入门课堂检测题解
  13. 关于动态路由OSPF原理、报文
  14. java文件一行一行读取_Java代码中如何一行一行的读取文本文件呢?
  15. vue实现视频播放器功能,你学会了吗
  16. 【Algorithms公开课学习笔记3】 栈与队列
  17. 魔兽世界怀旧服官网-衣米魔兽网站展示
  18. html网页打不开二级网页,教你二级网页打不开怎么解决
  19. 【阅读】Extrinsic 6DoF Calibration of 3D LiDAR and Radar
  20. Docker安装emqx详解(配置SSL证书、开启WSS、鉴权)

热门文章

  1. 计算机如何安装无线网络适配器,无线网络适配器是什么,无线网络适配器如何设置...
  2. opencv学习---计算图像的水平积分投影和垂直积分投影
  3. [机器视觉]gocv图像水平投影和垂直投影
  4. Mysql基础入门(五)子查询
  5. JavaWeb开发日记
  6. 升级Python2.7导致使用pip等命令安装模块失败
  7. JavaSE【定制化】~ 基础篇
  8. 连接阿里云服务器上MySQL数据库失败的解决办法
  9. 哈哈哈哈~山野村夫大进展
  10. Java相关知识点总结