MongoDB---数据类型,集合操作
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---数据类型,集合操作相关推荐
- MongoDB常用的操作(服务器、数据库、集合)
MongoDB常用的操作 前面两篇已经介绍了MongoDB系统架构及其BSON数据类型.本文将讲解基本的MongoDB操作. 一.MongoDB启动命令 启动MongoDB systemctl sta ...
- Oracle 语言分类 数据类型 数据类型转换 常用函数 集合操作 子查询
SQL分类 SQL(Structure Query Language)语言是数据库的核心语言.SQL语言共分为四大类:数据定义语言DDL,数据操纵语言DML,数据查询语言DQL,数据控制语言DCL.1 ...
- MongoDB(三):数据库操作、集合操作
1. 数据库操作 看完前面的文章,大家应该把环境搭建好了,下面我们就开始学习MongoDB的一些基本操作了. 首先我们要了解的一些要点: MongoDB将数据存储为一个文档,数据结构由键值对(key= ...
- mongodb常用语句(集合操作)
mongodb常用语句(集合操作) 查看集合帮助 db.songs.help(); 查看集合总数据量 db.songs.count(); 查看表空间大小 db.songs.dataSize(); 查看 ...
- MongoDB入门学习(一)简介与基本操作、整合SpringBoot集合操作、整合SpringBoot文档操作
文章目录 1. 简介 1.1 NoSQL和MongoDB 1.2 MongoDB特点 1.2.1 MongoDB 技术优势 1.2.2 Json 模型快速特性 1.3 MongoDB 应用场景 1.4 ...
- MongoDB (六) MongoDB 集合操作
一. MongoDB 创建集合 createCollection() 方法 MongoDB db.createCollection(name, options) 是用来创建集合. 语法: 基本的 cr ...
- MongoDB 的命令操作
MongoDB 系列文章: MongoDB 的 yum 安装 MongoDB 的命令操作 MongoDB 的编程操作 在介绍 MongoDB 的具体操作和使用之前,有必要介绍一些 MongoDB 的基 ...
- 04 MongoDB各种查询操作 以及聚合操作总结
基础篇(能解决工作中80%的问题): MongoDB的概述.应用场景.下载方式.连接方式和发展历史等 MongoDB数据类型.重要概念以及shell常用指令 MongoDB文档的各种增加.更新.删除操 ...
- Mongodb的索引操作
Mongodb的索引操作 1. 为什么mongdb需要创建索引 加快查询速度 进行数据的去重 2. mongodb创建简单的索引方法 语法:db.集合名.ensureIndex({属性:1}),1表示 ...
- mongodb的聚合操作
mongodb的聚合操作 1 mongodb的聚合是什么 聚合(aggregate)是基于数据处理的聚合管道,每个文档通过一个由多个阶段(stage)组成的管道,可以对每个阶段的管道进行分组.过滤等功 ...
最新文章
- 如何实现phpcms v9_4X版本tag的伪静态?
- PC/UVA 110207/10258
- is属性用法 vue_Vue中is属性的用法 可以动态切换组件
- python使用shell环境变量_linux中添加环境变量(python为例)
- div和div之间画横线_HTML如何在两个div标签中间画一条竖线
- gnu.getopt java_c – 用于GNU getopt()的-W选项是什么?
- 大数据(流量表)任务问题清洗生成新分区表过程
- Linux安装使用redis
- 2021高考文科成绩怎样查询,2021年本科分数线是多少?如何查询分数
- linux内核编程4部曲之一:linux内核编译(2.6.12版本)图文解说
- php获取 微信unionid,微信授权登录获取openId和unionId
- 2021.10.07高一Python语法入门课堂检测题解
- 关于动态路由OSPF原理、报文
- java文件一行一行读取_Java代码中如何一行一行的读取文本文件呢?
- vue实现视频播放器功能,你学会了吗
- 【Algorithms公开课学习笔记3】 栈与队列
- 魔兽世界怀旧服官网-衣米魔兽网站展示
- html网页打不开二级网页,教你二级网页打不开怎么解决
- 【阅读】Extrinsic 6DoF Calibration of 3D LiDAR and Radar
- Docker安装emqx详解(配置SSL证书、开启WSS、鉴权)