首先要介绍一下Mongodb的一些基本操作
show dbs //查看数据库
use test //使用当前数据库,新建数据库,test为数据库名称
// 增
db.test.insert({name:'wangjn',age:'20'}) //插入
db.test.insertOne({name:'haha'})
db.test.insertMany([{name:'123'},{name:'222'}])
// 查
// $lt 小于
// $lte 小于等于
// $gt 大于
// $gte 大于等于
// $ne 不等于
db.test.find() //查询所有文档
db.test.find({age:{$lt:16}}) //年龄小于16的数据
db.test.find({name:'234'}) //查找名字为234的文档
db.test.find({name:'234',age:19}) // 多条件
or条件
db.col.find({$or: [{key1: value1}, {key2:value2}]})
// 删除
db.test.remove({age:{$lt:16}}) //删除年龄小于16的文档,也就是记录行
db.test.drop() //删除集合,就是表
//修改
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.col.update( { "count" : { $gt : 1 } } , { $set : { "test2" : "OK"} } );
// 全部更新:
db.col.update( { "count" : { $gt : 3 } } , { $set : { "test2" : "OK"} },false,true );
// 只添加第一条:
db.col.update( { "count" : { $gt : 4 } } , { $set : { "test5" : "OK"} },true,false );
// 全部添加进去:
db.col.update( { "count" : { $gt : 5 } } , { $set : { "test5" : "OK"} },true,true );
// 全部更新:
db.col.update( { "count" : { $gt : 15 } } , { $inc : { "count" : 1} },false,true );
// 只更新第一条记录:
// db.col.update( { "count" : { $gt : 10 } } , { $inc : { "count" : 1} },false,false );
以上是mongodb的一些基本操作,使用mongoose之后一些操作的指令可能会发生变化,详情请见mongoose的官方文档
http://www.mongoosejs.net/docs/api.html
在这里直接附上mongoose的基本增删查改操作,路由和交互啥的没放上去,只起借鉴作用,完整的代码在最下面附上了git。
var express = require('express')
var app = express();
const uuidv1 = require('uuid/v1');
const cors = require("cors");
const crypto = require("crypto"); //node自带的密码加密
// const { get } = require("axios").default; //利用axois发送个网络请求
app.use(cors()); //就这一步就已经解决了跨域
var connection = require('../mongodb');
const {User} = require('../models/user.js');
module.exports = {
list:app.get('/userList', (req,res)=>{
var start = (req.query.pageNum-1)*req.query.pageSize
var end = req.query.pageNum*req.query.pageSize
new Promise(function(resolve, reject){
User.find({username:{$regex:req.query.name,$options:'i'}}, function(err, result){
if(err){
console.log('[search ERROR] - ',err);
return;
}
console.log(result.length)
resolve(result.length)
})
}).then((data)=>{
User.find({username:{$regex:req.query.name,$options:'i'}}, function(err, result){
if(err){
console.log('[search ERROR] - ',err);
return;
}
res.json({
code:'0',
data:result,
total:data,
msg:''
});
}).limit(Number(req.query.pageSize)).skip(start)
})
}),
detail:app.get('/userList/:id', (req,res)=>{
User.findOne({_id:req.params.id}, function(error, results){
if (error) throw error;
console.log(req.params)
res.json({
code:'0',
data:results,
msg:''
});
})
}),
create:app.post('/userList', (req,res)=>{
User.findOne({username:req.body.username}, function(error, results){
if (error) throw error;
if(results){
res.json({
code:'10010',
data:[],
msg:'用户名已存在'
});
return;
} else {
let md5 = crypto.createHash("md5");
let newPas = md5.update(req.body.password).digest("hex");
User.create({
username:req.body.username,
userage:req.body.userage,
password:newPas
},function(err, result){
if(err){
console.log('[INSERT ERROR] - ',err.message);
return;
}
res.json({
code:'0',
data:'',
msg:'成功'
});
})
}
})
}),
edit:app.put('/userList', (req,res)=>{
User.findByIdAndUpdate(
{
_id: req.body._id
},{
username:req.body.username,
userage:req.body.userage,
password:req.body.password
}, function(error, results){
if(error){
console.log('[UPDATE ERROR] - ',error);
return;
}
console.log('--------------------------UPDATE----------------------------');
console.log('UPDATE affectedRows',results);
res.json({
code:'0',
data:'',
msg:'成功'
});
})
}),
delete:app.delete('/userList', (req,res)=>{
User.deleteOne({_id:[req.body[0]]}, function(error, results){
if (error) throw error;
console.log(results)
res.json({
code:'0',
data:'',
msg:'成功'
});
})
}),
login:app.post('/user/login', (req,res)=>{
// const {username, password} = req.body;
let username = req.body.username;
let password = req.body.password;
let md5 = crypto.createHash("md5");
let newPas = md5.update(password).digest("hex");
console.log(username,newPas)
const user = User.findOne({username:username},function(err,result){
if(err){
console.log(err);
return;
}
if(!result){
res.json({
code:'10020',
data:[],
msg:'用户不存在'
});
return;
}
if(result.password !== newPas){
res.json({
code:'10030',
data:[],
msg:'密码错误'
});
return;
} else if(result.password === newPas){
res.json({
code:'0',
data:[],
msg:'成功'
});
return;
} else {
res.json({
code:'999',
data:[],
msg:'未知错误'
});
return;
}
})
}),
}
源码小demo附上https://github.com/wangjianan05/nodejsUseMongodb.git
网友评论