1. 什么是MongoDB ?
1、MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。在高负载的情况下,添加更多的节点,可以保证服务器性能。
2、MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。
3、MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。
下载,安装
homebrew 官方地址 https://brew.sh/
在终端输入以下语句
1.先安装 homebrew
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
2.接着安装 mongodb
brew install mongodb
3.终端启动MongoDB数据库
mongod —dbpath=数据库地址
例如: mongod --dbpath=/Users/lanou/Desktop/nodejs/vue/user/database
4.再在终端中键入mongo(显示版本信息什么就说明安装好了)
5.show dbs (查看所有数据库)
5.退出:exit退出,或者Ctrl+c
1.数据库操作
(1) . 创建(切换)数据库
use database_name :(database_name代表数据库的名字)
注:如果数据库不存在,则创建数据库,否则切换到指定数据库
(2) . 查看当前操作的数据库
db 或 db.getName()
注:db代表的是当前数据库 也就是person这个数据库
(3) . 查看所有数据库
show dbs
(4) . 删除数据库
db.dropDatabase()
2.集合操作
(1)查看当前数据库里的所有的集合
show collections
(2)创建集合(collection)
使用 db.createCollection(collection_Name)方法
(3)删除当前数据库中的集合(collection)
db.collection_Name.drop()
3.数据内容操作 (现在创建了一个users数据库,有一个person集合)
(1) 使用insert()方法插入文档
插入一条数据
db.person.insert({name:’zpx’,age:6}) 向person集合添加一个{name:’zpx’,age:6}的数据
插入多条数据
db.person.insert([{name:’wangWu’,age:50},{name:’xiaoMing’,age:60}]) 向person集合添加多个[{name:’wangWu’,age:50},{name:’xiaoMing’,age:60}] 的Document
(2) 使用save()方法插入文档
db.collection_name.save(document) collection_name集合的名字 document插入的文档
注:如果不指定 _id 字段 save() 方法类似于 insert() 方法。如果指定 _id 字段,则会更新该 _id 的数据。
实例
db.person.save({name:”xiaoHong”,age:50})
db.person.save({_id:ObjectId(“562c9caf671c978b6596e825”),name:”xiaoHong”,age:10})
(3)修改数据:通过id来修改 save方法
(4)更新
db.person.update({name:’liSi_update’}, {$set: {age:40}}) 将document数据中name是liSi_update 的数据的age修改为 40
注:如果有多条name是liSi的数据默认只更新一条
加上{multi:true}就是更新所有name是liSi的数据
db.person.update({name:’liSi_update’}, {$set: {age:40}},{multi:true})
(5)删除数据
db.person.remove({name:’fJianZhou’}) 默认删除worker集合里name是fJianZhou的所有
如果只想删除一条加上{justOne:true}
db.person.remove({name:’fJianZhou’},{justOne:true})
查询数据
(1)数据查询
db.person.find()
(2)pretty()方法以格式化的方式来显示所有文档
db.person.find().pretty()
(3)findOne()方法查询匹配结果的第一条数据
db.person.findOne()
(4)count统计查询到的数据条数
db.person.find().count()
(5)limit(num) :限制查询num条数据
db.person.find({$or:[{name:/李/},{name:/王/}]}).sort({age:-1}).limit(2)
(6)skip(num),跳过几条
db.person.find().skip(2).limit(2);跳过两条,limit查询两条
(7)排序查询(排序查询 1.正序。-1:倒序)数字不要加引号,排序会有问题
db.person.find().sort(age:1); 按照年龄排序
查询条件操作符
(1)比较条件
条件:大于gt 小于lt 大于等于 gte 小于等于 lt 不等于 ne 等于 直接用冒号
db.person.find({age:{$gt:30}}) 查询age 大于 30的数据
(2)逻辑条件 and or
并且关系
查询数据名字是“王五”,并且年龄是33,并且关系直接写在对象里面
db.person.find({name:"王五",age:33})
或者关系
查询年龄等于48或者28
db.person.find({$or:[{age:48},{age:28}]})
(3)正则表达
查询所有以“王作为开头的”的数据
db.person.find({name:/^王/})