MongoDB数据库基础
MongoDB简介
MongoDB是一种文档型的非关系型数据库(NoSQL),举例如下:
- {“foo”:3,"greeting":"Hello,world!"}
并且区分大小写,key值唯一,不可重复,文档可以嵌套,键值对是有序的
集合
1、集合就是一组文档
2、文档类似于关系库里的行
3、集合类似于关系库里的表
4、集合里的文档无需固定的结构(与关系型数据库的区别)
集合的命名
1、不能是空字符串
2、不能包含\0字符(空字符)
3、不能使用system.的前缀
4、建议不包含保留字“$”
5、用.分割不同命名空间的子集合(如:blog.users)
数据库
1、多个文档组成集合,多个集合组成数据库
2、一个实例可以承载多个数据库
3、每个数据库都有独立的权限
4、保留的数据库名称(admin,local,config)
命令行操作MongoDB
参考菜鸟教程
在\MongoDB\Server\3.4\bin进入命令行窗口,然后敲mongo即进入MongoDB服务,显示所有数据库
- > show dbs;
使用某一数据库(如果不存在的话则会自动新建)
- > use 数据库名称;
插入数据
写数据
- > stu = {
- name:'Jhon',
- age:21,
- "sex":"male"
- }
插入数据
- > db.数据库名称.insert(stu)
查询数据
- > db.数据库名称.find()
更新数据
- > stu_obj = db.students.findOne()
- {
- "_id" : ObjectId("5a9a01c5b1489e70f3a89a0c"),
- "name" : "Jhon",
- "age" : 21,
- "sex" : "male"
- }
- > stu_obj.name = "Jackchen"
- Jackchen
- > db.students.update({name:"Jhon"},stu_obj)
- WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
- > db.students.findOne()
- {
- "_id" : ObjectId("5a9a01c5b1489e70f3a89a0c"),
- "name" : "Jackchen",
- "age" : 21,
- "sex" : "male"
- }
更新数据时,update里第二个参数会完全代替前一个参数,所以如果第二个参数只有{name:"**"},会把原来的数据删除
如果要更新多个数据,则可以使用updateMany
总结:这种方式更新数据相当麻烦,可以用修改器
删除数据
原来是三条数据:
- > db.students.find()
- { "_id" : ObjectId("5a9a01c5b1489e70f3a89a0c"), "name" : "Jhon", "age" : 21, "sex" : "male" }
- { "_id" : ObjectId("5a9a04d9b1489e70f3a89a0d"), "name" : "oldhu" }
- { "_id" : ObjectId("5a9a09a3b1489e70f3a89a0e"), "name" : "Amy", "age" : 16, "sex" : "male" }
删除其中一条:
- > db.students.remove({name:"oldhu"})
- WriteResult({ "nRemoved" : 1 })
- > db.students.find()
- { "_id" : ObjectId("5a9a01c5b1489e70f3a89a0c"), "name" : "Jackchen", "age" : 21, "sex" : "male" }
- { "_id" : ObjectId("5a9a09a3b1489e70f3a89a0e"), "name" : "Amy", "age" : 16, "sex" : "male" }
删除全部:
- > db.students.remove({})
- WriteResult({ "nRemoved" : 2 })
- > db.students.find()
- >
练习
1、创建一个学生信息表(包含:姓名,性别,成绩,年龄)
2、写入十五条不同的数据
3、查询所有的男生数据(只需要学生的姓名和年龄)
4、查询成绩合格的学生信息(学生成绩大于或等于60分)
5、查询所有18岁的男生和16岁的女生的数据
6、按照学生的年龄进行排序
7、将所有的学生年龄增加一岁
步骤1和2、
先在文本编辑器里面编辑好文档,推荐使用sublimeText3或者Notepad++
- > use students;
> db.students.insertMany(- ... [
- ... {name:"bob",age:14,sex:"male",grade:95},
- ... {name:"ahn",age:18,sex:"female",grade:45},
- ... {name:"xi",age:15,sex:"male",grade:75},
- ... {name:"hiy",age:23,sex:"male",grade:85},
- ... {name:"young",age:21,sex:"male",grade:45},
- ... {name:"nive",age:25,sex:"female",grade:55},
- ... {name:"longsi",age:19,sex:"male",grade:95},
- ... {name:"puki",age:16,sex:"female",grade:95},
- ... {name:"bbc",age:26,sex:"male",grade:95},
- ... {name:"hippop",age:54,sex:"male",grade:95},
- ... {name:"sue",age:21,sex:"feale",grade:95},
- ... {name:"yang",age:36,sex:"male",grade:95}
- ... ]
- ... )
- {
- "acknowledged" : true,
- "insertedIds" : [
- ObjectId("5a9a10adb1489e70f3a89a0f"),
- ObjectId("5a9a10adb1489e70f3a89a10"),
- ObjectId("5a9a10adb1489e70f3a89a11"),
- ObjectId("5a9a10adb1489e70f3a89a12"),
- ObjectId("5a9a10adb1489e70f3a89a13"),
- ObjectId("5a9a10adb1489e70f3a89a14"),
- ObjectId("5a9a10adb1489e70f3a89a15"),
- ObjectId("5a9a10adb1489e70f3a89a16"),
- ObjectId("5a9a10adb1489e70f3a89a17"),
- ObjectId("5a9a10adb1489e70f3a89a18"),
- ObjectId("5a9a10adb1489e70f3a89a19"),
- ObjectId("5a9a10adb1489e70f3a89a1a")
- ]
- }
- > db.students.find()
- { "_id" : ObjectId("5a9a10adb1489e70f3a89a0f"), "name" : "bob", "age" : 14, "sex" : "male", "grade" : 95 }
- { "_id" : ObjectId("5a9a10adb1489e70f3a89a10"), "name" : "ahn", "age" : 18, "sex" : "female", "grade" : 45 }
- { "_id" : ObjectId("5a9a10adb1489e70f3a89a11"), "name" : "xi", "age" : 15, "sex" : "male", "grade" : 75 }
- { "_id" : ObjectId("5a9a10adb1489e70f3a89a12"), "name" : "hiy", "age" : 23, "sex" : "male", "grade" : 85 }
- { "_id" : ObjectId("5a9a10adb1489e70f3a89a13"), "name" : "young", "age" : 21, "sex" : "male", "grade" : 45 }
- { "_id" : ObjectId("5a9a10adb1489e70f3a89a14"), "name" : "nive", "age" : 25, "sex" : "female", "grade" : 55 }
- { "_id" : ObjectId("5a9a10adb1489e70f3a89a15"), "name" : "longsi", "age" : 19, "sex" : "male", "grade" : 95 }
- { "_id" : ObjectId("5a9a10adb1489e70f3a89a16"), "name" : "puki", "age" : 16, "sex" : "female", "grade" : 95 }
- { "_id" : ObjectId("5a9a10adb1489e70f3a89a17"), "name" : "bbc", "age" : 26, "sex" : "male", "grade" : 95 }
- { "_id" : ObjectId("5a9a10adb1489e70f3a89a18"), "name" : "hippop", "age" : 54, "sex" : "male", "grade" : 95 }
- { "_id" : ObjectId("5a9a10adb1489e70f3a89a19"), "name" : "sue", "age" : 21, "sex" : "feale", "grade" : 95 }
- { "_id" : ObjectId("5a9a10adb1489e70f3a89a1a"), "name" : "yang", "age" : 36, "sex" : "male", "grade" : 95 }
步骤3、
- > db.students.find({sex:'male'},{name:1,age:1,_id:0})
- { "name" : "bob", "age" : 14 }
- { "name" : "xi", "age" : 15 }
- { "name" : "hiy", "age" : 23 }
- { "name" : "young", "age" : 21 }
- { "name" : "longsi", "age" : 19 }
- { "name" : "bbc", "age" : 26 }
- { "name" : "hippop", "age" : 54 }
- { "name" : "yang", "age" : 36 }
步骤4、
- > db.students.find({grade:{'$gte':60}})
- { "_id" : ObjectId("5a9a10adb1489e70f3a89a0f"), "name" : "bob", "age" : 14, "sex" : "male", "grade" : 95 }
- { "_id" : ObjectId("5a9a10adb1489e70f3a89a11"), "name" : "xi", "age" : 15, "sex" : "male", "grade" : 75 }
- { "_id" : ObjectId("5a9a10adb1489e70f3a89a12"), "name" : "hiy", "age" : 23, "sex" : "male", "grade" : 85 }
- { "_id" : ObjectId("5a9a10adb1489e70f3a89a15"), "name" : "longsi", "age" : 19, "sex" : "male", "grade" : 95 }
- { "_id" : ObjectId("5a9a10adb1489e70f3a89a16"), "name" : "puki", "age" : 16, "sex" : "female", "grade" : 95 }
- { "_id" : ObjectId("5a9a10adb1489e70f3a89a17"), "name" : "bbc", "age" : 26, "sex" : "male", "grade" : 95 }
- { "_id" : ObjectId("5a9a10adb1489e70f3a89a18"), "name" : "hippop", "age" : 54, "sex" : "male", "grade" : 95 }
- { "_id" : ObjectId("5a9a10adb1489e70f3a89a19"), "name" : "sue", "age" : 21, "sex" : "feale", "grade" : 95 }
- { "_id" : ObjectId("5a9a10adb1489e70f3a89a1a"), "name" : "yang", "age" : 36, "sex" : "male", "grade" : 95 }
步骤5、
- > db.students.find({'$or':[{sex:'male',age:18},{sex:'female',age:16}]})
- { "_id" : ObjectId("5a9a10adb1489e70f3a89a16"), "name" : "puki", "age" : 16, "sex" : "female", "grade" : 95 }
步骤6、(升序)
- > db.students.find().sort({age:1})
- { "_id" : ObjectId("5a9a10adb1489e70f3a89a0f"), "name" : "bob", "age" : 14, "sex" : "male", "grade" : 95 }
- { "_id" : ObjectId("5a9a10adb1489e70f3a89a11"), "name" : "xi", "age" : 15, "sex" : "male", "grade" : 75 }
- { "_id" : ObjectId("5a9a10adb1489e70f3a89a16"), "name" : "puki", "age" : 16, "sex" : "female", "grade" : 95 }
- { "_id" : ObjectId("5a9a10adb1489e70f3a89a10"), "name" : "ahn", "age" : 18, "sex" : "female", "grade" : 45 }
- { "_id" : ObjectId("5a9a10adb1489e70f3a89a15"), "name" : "longsi", "age" : 19, "sex" : "male", "grade" : 95 }
- { "_id" : ObjectId("5a9a10adb1489e70f3a89a13"), "name" : "young", "age" : 21, "sex" : "male", "grade" : 45 }
- { "_id" : ObjectId("5a9a10adb1489e70f3a89a19"), "name" : "sue", "age" : 21, "sex" : "feale", "grade" : 95 }
- { "_id" : ObjectId("5a9a10adb1489e70f3a89a12"), "name" : "hiy", "age" : 23, "sex" : "male", "grade" : 85 }
- { "_id" : ObjectId("5a9a10adb1489e70f3a89a14"), "name" : "nive", "age" : 25, "sex" : "female", "grade" : 55 }
- { "_id" : ObjectId("5a9a10adb1489e70f3a89a17"), "name" : "bbc", "age" : 26, "sex" : "male", "grade" : 95 }
- { "_id" : ObjectId("5a9a10adb1489e70f3a89a1a"), "name" : "yang", "age" : 36, "sex" : "male", "grade" : 95 }
- { "_id" : ObjectId("5a9a10adb1489e70f3a89a18"), "name" : "hippop", "age" : 54, "sex" : "male", "grade" : 95 }
(降序)
- > db.students.find().sort({age:-1})
- { "_id" : ObjectId("5a9a10adb1489e70f3a89a18"), "name" : "hippop", "age" : 54, "sex" : "male", "grade" : 95 }
- { "_id" : ObjectId("5a9a10adb1489e70f3a89a1a"), "name" : "yang", "age" : 36, "sex" : "male", "grade" : 95 }
- { "_id" : ObjectId("5a9a10adb1489e70f3a89a17"), "name" : "bbc", "age" : 26, "sex" : "male", "grade" : 95 }
- { "_id" : ObjectId("5a9a10adb1489e70f3a89a14"), "name" : "nive", "age" : 25, "sex" : "female", "grade" : 55 }
- { "_id" : ObjectId("5a9a10adb1489e70f3a89a12"), "name" : "hiy", "age" : 23, "sex" : "male", "grade" : 85 }
- { "_id" : ObjectId("5a9a10adb1489e70f3a89a13"), "name" : "young", "age" : 21, "sex" : "male", "grade" : 45 }
- { "_id" : ObjectId("5a9a10adb1489e70f3a89a19"), "name" : "sue", "age" : 21, "sex" : "feale", "grade" : 95 }
- { "_id" : ObjectId("5a9a10adb1489e70f3a89a15"), "name" : "longsi", "age" : 19, "sex" : "male", "grade" : 95 }
- { "_id" : ObjectId("5a9a10adb1489e70f3a89a10"), "name" : "ahn", "age" : 18, "sex" : "female", "grade" : 45 }
- { "_id" : ObjectId("5a9a10adb1489e70f3a89a16"), "name" : "puki", "age" : 16, "sex" : "female", "grade" : 95 }
- { "_id" : ObjectId("5a9a10adb1489e70f3a89a11"), "name" : "xi", "age" : 15, "sex" : "male", "grade" : 75 }
- { "_id" : ObjectId("5a9a10adb1489e70f3a89a0f"), "name" : "bob", "age" : 14, "sex" : "male", "grade" : 95 }
步骤7、(使用修改器来更新)
例子:将所有集合增加一个address项,值是‘---’
- > db.students.update({},{'$set':{address:'---'}},{multi:true})
- WriteResult({ "nMatched" : 12, "nUpserted" : 0, "nModified" : 12 })
- > db.students.find()
- { "_id" : ObjectId("5a9a10adb1489e70f3a89a0f"), "name" : "bob", "age" : 14, "sex" : "male", "grade" : 95, "address" : "---" }
- { "_id" : ObjectId("5a9a10adb1489e70f3a89a10"), "name" : "ahn", "age" : 18, "sex" : "female", "grade" : 45, "address" : "---" }
- { "_id" : ObjectId("5a9a10adb1489e70f3a89a11"), "name" : "xi", "age" : 15, "sex" : "male", "grade" : 75, "address" : "---" }
- { "_id" : ObjectId("5a9a10adb1489e70f3a89a12"), "name" : "hiy", "age" : 23, "sex" : "male", "grade" : 85, "address" : "---" }
- { "_id" : ObjectId("5a9a10adb1489e70f3a89a13"), "name" : "young", "age" : 21, "sex" : "male", "grade" : 45, "address" : "---" }
- { "_id" : ObjectId("5a9a10adb1489e70f3a89a14"), "name" : "nive", "age" : 25, "sex" : "female", "grade" : 55, "address" : "---" }
- { "_id" : ObjectId("5a9a10adb1489e70f3a89a15"), "name" : "longsi", "age" : 19, "sex" : "male", "grade" : 95, "address" : "---" }
- { "_id" : ObjectId("5a9a10adb1489e70f3a89a16"), "name" : "puki", "age" : 16, "sex" : "female", "grade" : 95, "address" : "---" }
- { "_id" : ObjectId("5a9a10adb1489e70f3a89a17"), "name" : "bbc", "age" : 26, "sex" : "male", "grade" : 95, "address" : "---" }
- { "_id" : ObjectId("5a9a10adb1489e70f3a89a18"), "name" : "hippop", "age" : 54, "sex" : "male", "grade" : 95, "address" : "---" }
- { "_id" : ObjectId("5a9a10adb1489e70f3a89a19"), "name" : "sue", "age" : 21, "sex" : "feale", "grade" : 95, "address" : "---" }
- { "_id" : ObjectId("5a9a10adb1489e70f3a89a1a"), "name" : "yang", "age" : 36, "sex" : "male", "grade" : 95, "address" : "---" }
所有学生年龄增加一岁:
- > db.students.update({},{'$inc':{age:1}},{multi:true})
- WriteResult({ "nMatched" : 12, "nUpserted" : 0, "nModified" : 12 })
- > db.students.find()
- { "_id" : ObjectId("5a9a10adb1489e70f3a89a0f"), "name" : "bob", "age" : 15, "sex" : "male", "grade" : 95, "address" : "---" }
- { "_id" : ObjectId("5a9a10adb1489e70f3a89a10"), "name" : "ahn", "age" : 19, "sex" : "female", "grade" : 45, "address" : "---" }
- { "_id" : ObjectId("5a9a10adb1489e70f3a89a11"), "name" : "xi", "age" : 16, "sex" : "male", "grade" : 75, "address" : "---" }
- { "_id" : ObjectId("5a9a10adb1489e70f3a89a12"), "name" : "hiy", "age" : 24, "sex" : "male", "grade" : 85, "address" : "---" }
- { "_id" : ObjectId("5a9a10adb1489e70f3a89a13"), "name" : "young", "age" : 22, "sex" : "male", "grade" : 45, "address" : "---" }
- { "_id" : ObjectId("5a9a10adb1489e70f3a89a14"), "name" : "nive", "age" : 26, "sex" : "female", "grade" : 55, "address" : "---" }
- { "_id" : ObjectId("5a9a10adb1489e70f3a89a15"), "name" : "longsi", "age" : 20, "sex" : "male", "grade" : 95, "address" : "---" }
- { "_id" : ObjectId("5a9a10adb1489e70f3a89a16"), "name" : "puki", "age" : 17, "sex" : "female", "grade" : 95, "address" : "---" }
- { "_id" : ObjectId("5a9a10adb1489e70f3a89a17"), "name" : "bbc", "age" : 27, "sex" : "male", "grade" : 95, "address" : "---" }
- { "_id" : ObjectId("5a9a10adb1489e70f3a89a18"), "name" : "hippop", "age" : 55, "sex" : "male", "grade" : 95, "address" : "---" }
- { "_id" : ObjectId("5a9a10adb1489e70f3a89a19"), "name" : "sue", "age" : 22, "sex" : "feale", "grade" : 95, "address" : "---" }
- { "_id" : ObjectId("5a9a10adb1489e70f3a89a1a"), "name" : "yang", "age" : 37, "sex" : "male", "grade" : 95, "address" : "---" }
所有女学生年龄增加一岁:
- > db.students.update({sex:"female"},{'$inc':{age:1}},{multi:true})
- WriteResult({ "nMatched" : 3, "nUpserted" : 0, "nModified" : 3 })
- > db.students.find({sex:"female"})
- { "_id" : ObjectId("5a9a10adb1489e70f3a89a10"), "name" : "ahn", "age" : 20, "sex" : "female", "grade" : 45, "address" : "---" }
- { "_id" : ObjectId("5a9a10adb1489e70f3a89a14"), "name" : "nive", "age" : 27, "sex" : "female", "grade" : 55, "address" : "---" }
- { "_id" : ObjectId("5a9a10adb1489e70f3a89a16"), "name" : "puki", "age" : 18, "sex" : "female", "grade" : 95, "address" : "---" }
MongoDB数据库可视化工具
这里用的是Robo 3T,可以方便查看数据库,以及实现增删改查操作
MongoDB数据库基础的更多相关文章
- MongoDB数据库基础操作
前面的话 为了保存网站的用户数据和业务数据,通常需要一个数据库.MongoDB和Node.js特别般配,因为Mongodb是基于文档的非关系型数据库,文档是按BSON(JSON的轻量化二进制格式)存储 ...
- MongoDB数据库 : 基础
三元素:数据库 集合 文档(json的扩展bson) 服务启动重启停止: sudo service mongodb start(stop,restart) 修改配置文件 /etc/mongodb.co ...
- 004.MongoDB数据库基础使用
一 数据库管理 1.1 创建数据库 [root@uhost ~]# mongo --host 172.24.9.225 --port 27017 -u useradmin -p useradmin & ...
- MongoDB数据库-基础篇
一使用mongodb 1.常用的命令 show dbs 显示数据库列表 use dbname 进入dbname数据库,大小写敏感,没有这个数据库也不要紧 show collections ...
- 01-MongoDB数据库基础
一.MongoDB数据库基础 1.MongoDB数据库介绍 什么是MongoDB? MongoDB是非关系型数据库中的一种,是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统.在高负载的情 ...
- 基于C#的MongoDB数据库开发应用(1)--MongoDB数据库的基础知识和使用
在花了不少时间研究学习了MongoDB数据库的相关知识,以及利用C#对MongoDB数据库的封装.测试应用后,决定花一些时间来总结一下最近的研究心得,把这个数据库的应用单独作为一个系列来介绍,希望从各 ...
- 数据库基础 非关系型数据库 MongoDB 和 redis
数据库基础 非关系型数据库 MongoDB 和 redis 1 NoSQL简介 访问量增加,频繁的读写 直接访问(硬盘)物理级别的数据,会很慢 ,关系型数据库的压力会很大 所以,需要内存级的读写操作, ...
- SpringBoot2.0 基础案例(15):配置MongoDB数据库,实现增删改查逻辑
本文源码:GitHub·点这里 || GitEE·点这里 一.NoSQL简介 1.NoSQL 概念 NoSQL( Not Only SQL ),意即"不仅仅是SQL".对不同于传统 ...
- node.js零基础详细教程(6):mongodb数据库操作
第六章 建议学习时间4小时 课程共10章 学习方式:详细阅读,并手动实现相关代码 学习目标:此教程将教会大家 安装Node.搭建服务器.express.mysql.mongodb.编写后台业务逻辑. ...
随机推荐
- Redis深入之对象
Redis对象系统 前面介绍了Redis用到的全部主要数据结构,如简单动态字符串(SDS).双端链表.字典.压缩列表.整数集合等 Redis并没有直接使用这些数据结构来实现键值对数据库.而是基于这些数 ...
- WPF下载文件并且动态显示进度
前台新建一个控件ProgressBar控件,并命名为pbDown WebRequest request = WebRequest.Create("http://file ...
- angularjs 1.x lazyloading
https://oclazyload.readme.io/docs 安装好后直接使用 var myApp = angular.module("MyApp", ["oc.l ...
- oracle decode()函数的参数原来可以为sql语句!
1.情景展示 判断某个字段的值,如果以APP开头,需查询APP表里对应的数据:如果是以JG开头,就查询机构对应的表. 2.原因分析 如果使用CASE WHEN THEN或者IF ELSIF 太麻烦 ...
- Notes中几个处理多值域的通用函数
1.查找出查找内容在多值域中的索引值 getItemIndex(域名,域值,文档) Public Function getItemIndex(ByVal fieldName As String, By ...
- 转 sshfs把远程主机的文件系统映射到本地的目录中
windows之外的世界比想像中要大得多呢,几乎天天都在用ssh,却到今天才知道有sshfs这个好东西,前几天还在为ZendStudio可以远程编辑文件欣喜,惭愧啊,终于有比vi scp://host ...
- java webdriver的api的封装
我们来看一下官网提供的代码写法,即最原始的写法: driver.findElement(By.id("kw")).click() 这样写是没任何问题的,但这样没有把元素对象,数据, ...
- AJAX技术之DWR框架
DWR(Direct Web Remoting)是一个用于改善web页面与Java类交互的远程服务器端Ajax开源框架,可以帮助开发人员开发包含AJAX技术的网站.它可以允许在浏览器里的代码使用运行在 ...
- nginx配置http为1.0到1.1
转载自:https://blog.csdn.net/u014558668/article/details/79237020 需求:接口通过nginx转发服务器,接收不到数据,但是测试环境是好的: 环境 ...
- 编译错误“The run destination My Mac is not valid for Running the scheme '***',解决办法
[转载] http://blog.csdn.net/duanyipeng/article/details/8007684 编译错误"The run destination My Ma ...