概述
MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的,是分布式文件存储数据库。
它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
MongoDB服务端可运行在Linux、Windows平台,支持32位和64位应用,默认端口为27017。
推荐运行在64位平台,因为MongoDB在32位模式运行时支持的最大文件尺寸为2GB。
特点
介于关系数据库和非关系数据库之间的产品,看图定位其产品意义:高效的数据存储,灵活的数据查询
基本概念
MongoDB 中存在以下系统数据库。
- Admin 数据库:一个权限数据库,如果创建用户的时候将该用户添加到admin 数据库中,那么该用户就自动继承了所有数据库的权限。
- Local 数据库:这个数据库永远不会被复制,可以用来存储本地单台服务器的任意集合。
- Config 数据库:当MongoDB 使用分片模式时,config 数据库在内部使用,用于保存分片的信息。
原文链接:https://blog.youkuaiyun.com/nanhuaibeian/article/details/108185211
安装windows
自行从官网下哦
在你data的目录下,创建一个db文件; 类似于:‘D:\Mongodb\Server\data\db’;
因为启动 MongoDB 服务之前需要必须创建数据库文件的存放文件夹,否则命令不会自动创建,而且不能启动成功;
服务器端启动
直接启动
会去根目录盘符下找db
mongod --dbpath 指定db文件路径
默认端口27017
在浏览器访问显示如下则成功
客户端启动
monog.exe
数据库命令
显示所有数据库
show dbs
切换数据库,如果数据库不存在则创建数据库
use <dbname>
显示当前所在的数据库
db
删除数据库
use <dbname>
db.dropDatabase()
集合命令
创建集合
db.createCollection('集合名称')
显示当前数据库下所有集合
show collections
删除集合
db.集合名.drop()
重命名集合
db.集合名.renameCollection('newname')
文档命令
插入文档
db.集合名.insert(文档对象)
查询文档
// 无查询条件显示全部
db.集合名.find(<查询条件>)
注:有没有一种 select * from user 的感觉
更新文档
db.集合名.update(查询条件,新文档)
删除文档
db.集合名.remove(查询条件)
mongoose代码(连接服务端)
const mongoose=require("mongoose")
mongoose.connect("mongodb://127.0.0.1:27017/test")
mongoose.connection.on("open",()=>{
console.log("启动成功")
let UserSchema=new mongoose.Schema({
name:String,
age:String
})
let userModel=mongoose.model("user",UserSchema)
userModel.create({
name:"fw",
age:100
})
})
mongoose.connection.on("error",()=>{
console.log("启动错误")
})
mongoose.connection.on("close",()=>{
console.log("关闭")
})
字段类型
内置验证校验
字段:{
type:类型
required: 必传
defaule: 默认
enum: 摸鱼
unique:唯一
}
增删改查
userModel.insertOne({
name:'xsxxx',
age:'111'
}).then(result=>{
console.log(result)
})
userModel.deleteOne({name:'fw1'}).then(result => {
console.log('删除成功:', result);
// result 包含 { deletedCount: 1 } 如果成功删除
})
userModel.updateOne({
name:"aaa"
},{
name:"bbb"
}).then(result=>{
console.log(result)
})
查:
userModel.find().then(result=>{
console.log(result)
})
条件控制
- > 使用 $gt
- < 使用$lt
- >=使用$gte
- <=使用$lte
- !=使用$ne
db.students.find({id:{$gt:3}});id号比3大的所有的记录
or 逻辑或的情况
db.students.find({$or:[{age:18},{age:24}]});
and 逻辑与的情况
db.students.find({$and:[{age:{$lt:20}},{age: {$gt:15}}]});
个性查询
- 查询接口返回指定字段
select: 字段:1为显示,0不显示
userModel.find().select({name:1,lv:1}).then(result=>{
console.log(result)
})
- 数据排序
sort
1:升序 -1:倒序
userModel.find().sort({age:-1}).then(result=>{
console.log(result)
})
- 记录截取,只取几条
limit
userModel.find().limit(1).then(result=>{
console.log(result)
})
- 跳过记录数
skip
userModel.find().skip(1).limit(1).then(result=>{
console.log(result)
})