1.mongodb的使用
# 创建一个数据库(database)
# 创建集合(collection)
# 文档的增删改查
-show dbs:显示所有数据库
-user db_name:进入指定的数据库
-show collections:查看指定数据库里的数据表
-db.db_name.find():查看指定数据表的内容
-db.db_name.insert({username:"lise"}):新增内容
-db.db_name.find({"city":"shanghai"}):按条件查询
-db.db_nam.find().sort({age:1}):排序,1是升序 -1是降序
# bson
-JSON是一种常用的数据格式
-JSON是字符串类型的
-bson = Binary JSON即二进制类型的JSON
# NoSQL
-关系型数据库(如mysql)需要学习sql语言
-如select content,creator from comments;
-NoSQL数据库则无需用SQL语句查询,易学易用
2.nodejs连接mongodb数据库
# 安装mongodb npm(nodejs连接mongodb需要的一个插件) npm install mongodb --save
const MongoClient = require('mongodb').MongoClient;
const url = 'mongodb://localhost:27017'
//要连接的数据库名
const dbName = 'comment1'
//触发连接
MongoClient.connect(url,{
//触发时的相关配置
useUnifiedTopology:true,
useNewUrlParser:true
},(err,client)=>{
if(err){
console.error('mongondb连接出错',err);
return
}else{
console.log('mongodb连接成功');
}
const db = client.db(dbName);//进入数据库
//关闭
client.close();
})
# 连接数据库,连接集合
# 操作文档,增删查改
//nodejs连接mongodb
const MongoClient = require('mongodb').MongoClient;
const url = 'mongodb://localhost:27017'
//要连接的数据库名
const dbName = 'comment1'
//触发连接
MongoClient.connect(url,{
//触发时的相关配置
useUnifiedTopology:true,
useNewUrlParser:true
},(err,client)=>{
if(err){
console.error('mongondb连接出错',err);
return
}else{
console.log('mongodb连接成功');
}
//进入数据库
const db = client.db(dbName);
//进入数据表
const userCollection = db.collection('users');
//查询数据、按条件查询、排序
// userCollection.find({city:'beijing'}).sort({age:1}).toArray((err,result)=>{
// if(err){
// console.error('查询数据出错',err);
// return
// }else{
// console.log('查询结果',result);
// }
// })
//新增数据
// userCollection.insertOne({
// username:'zhaoliu',
// password:'345',
// age:24,
// city:'kunming'
// },(err,result)=>{
// if(err){
// console.error('新增数据失败',err);
// }else{
// console.log('新增数据返回的结果',result);
// }
// })
//修改数据
// userCollection.updateOne(
// {username:'zhangsan'},
// {$set:{age:19}},
// (err,result)=>{
// if(err){
// console.error('修改失败',err);
// }else{
// console.log('修改后的数据',result);
// }
// }
// )
//删除数据
userCollection.deleteOne({username:'zhaoliu'},(err,result)=>{
if(err){
console.error('删除失败',err);
return
}else{
console.log('删除成功',result);
}
})
//
//关闭
//client.close();
})
3.mongoose 安装:npm install mongoose
# Schema(使格式更规范)和Model
-Schema定义数据格式的规范
-以Model规范Conllection
-规范数据操作的API
# 基于Model操作数据库
# mongoose操作数据库
-npm install mongoose
db.js
//mongoose连接数据库模块
const mongodb = require('mongoose');
//获取数据库地址 并 找到数据库
const url = 'mongodb://localhost:27017';
const dbName = 'comments2';
//开始连接 connect
mongoose.connect(`${url}/${dbName}`{
//连接的配置
useNewURLParser:true,
useUnifiedTopology:true
})
//连接会发生一些错误需要借助 connection 来提示
const conn = mongoose.connection;
conn.on('error',err=>{
conosle.log('mongoose连接数据库失败',err);
})
//导出模块
module.exports = mongoose;
model.js //数据模型
//利用mongoose里的Schema来规范数据模型
const mongoose = require('./db');
//定义用户的数据模型
const UserSchema = mongoose.Schema({
username:{
type:String,
require:true,
unique:true
},
password:String,
age:Number,
city:String,
gender:{
type:Number,
default:0 //默认0-保密,1-男,0-女
}
},{
timestamp:true //会自动添加文档的创建时间
})
//把Schema应用到user表里并放到User模型中
const User = mongoose.model('user',UserSchema);
module.exports = {User};
test.js
//使用模型操作数据库
const {User} = require('./model');
!(async ()=>{
//增加数据
const zhangsan = await User({
username:'zhangsan',
password:'123',
age:20,
city:'bijing',
gender:1
})
console.log('新增成功',zhangsan);
//查询数据
const userList = await User.find();
console.log('查到的结果',userList);
//排序
const userList = await User.find().sort({age:-1});
console.log('排序结果',userList);
//查询单条数据,返回的是对象
const userList = await User.findOne({username:'zhangsan'});
console.log('查到的结果',userList);
//更新或修改数据
const updateResult User.findOneAndUpdate(
{username:'zhangsan'}
{age:18}
//返回更新后的配置
{new:true}
)
console.log('更新后的结果',updateResult);
//删除数据
const removeResult = await User.remove({username:'zhangsan'});
console.log('删除成功',removeResult);
})()