MongoDB数据库的增删改查
直接看下面的代码:
// 数据库:MongoDB
// Nodejs操作mongodb数据库的模块,常用的是mongoose
const mongoose = require('mongoose');
// 连接数据库
// mongodb:数据库连接遵循的协议
// localhost:数据库的IP地址,连网可用,如果不连网,使用127.0.0.1
// njUser: 数据库名称
mongoose.connect('mongodb://localhost/njUser', { useNewUrlParser:true });
// 验证数据库是否连接成功
const db = mongoose.connection;
db.on('error', function(){
console.log('数据库连接失败');
})
db.once('open', function(){
console.log('数据库连接成功');
})
// 以用户注册举例,描述用户的信息
// 1.设置文档的数据结构,即该文档中的属性与属性值所遵循的数据类型
const userSchema = new mongoose.Schema({
username:String,
password:String,
createTime:Date,
updateTime:Date,
age:Number
})
// 注意:集合内部由大量的文档构成
// 2.创建集合,并设置该集合中的文档所遵循的数据结构
// 参数1:集合名称,可设置单数,数据库中自动变成复数
// 参数2:文档遵循的数据结构
const UserModel = mongoose.model('njuser', userSchema);
let user = {
username:'张三',
password:'as1234567',
createTime:2018-3-27,
updateTime:2018-11-29,
age:22
}
// 3. 通过集合生成实例化的文档对象
// 注意:实例化对象的属性和属性值,必须与Schema中规定的数据结构保持一致,否则会保存失败
let user1 = new UserModel({
username:'白白白',
password:'as1234567',
createTime:2018-3-27,
updateTime:2018-11-29,
age:26
})
// 4. 将生成的文档,保存至数据库中
// user1.save(function(err){
// if(err){
// console.log('保存失败');
// return;
// }
//
// console.log('保存成功')
//
// })
// 查找 find()
// 无条件查找,查找所有的数据 得到的是个数组
// UserModel.find().exec(function(err, datas){
// if(err){
// console.log('数据库错误');
// return;
// }
// console.log(datas);
// })
// 有条件查找 find() 查找到的是符合条件的所有的数据,是个数组
// UserModel.find({ username:'张三' }).exec(function(err, datas){
// if(err){
// console.log('数据库错误');
// return;
// }
// console.log(datas);
// })
// findOne() 查找符合条件的一个数据,如果不存在,返回null, 如果存在,是个对象
// UserModel.findOne({ username:'aaaaaa' }).exec(function(err, data){
// if(err){
// console.log('数据库错误');
// return;
// }
// console.log(data);
// if( !data ){
// console.log('该用户未注册,请注册...');
// return;
// }
// console.log('用户已注册,请比较密码');
// })
// findById() 通过id值获取符合条件的数据 , 数据唯一
// let id = '5bff892c1943ac2dc0aa92f3';
// UserModel.findById( id ).exec(function(err, data){
// if(err){
// console.log('数据库错误');
// return;
// }
// console.log(data);
// if( !data ){
// console.log('该用户未注册,请注册...');
// return;
// }
// console.log('用户已注册,请比较密码');
// })
// 修改
// 参数1:查找的条件,即根据条件查找的数据
// 参数2:要修改的数据
// UserModel.findOneAndUpdate( {username:'李四'}, {age:1000} ).exec(function(err, data){
// if(err){
// console.log('修改失败');
// return;
// }
// console.log('修改成功');
// // 修改过程中,参数2的data可以忽略不计,如果该参数存在,显示的是修改前的数据
// console.log(data);
//
// })
// 删除
// UserModel.findOneAndRemove({username:'李四'}).exec(function(err){
// if(err){
// console.log('删除失败');
// return;
// }
// console.log('删除成功');
// })
// 复杂查找
// 按照年龄 倒序排列
// UserModel.find().sort( { age:-1 } ).exec(function(err, datas){
//
// console.log(datas);
//
// })
// 查找年龄是26或者19的用户
// UserModel.find( { $or: [ {age:26},{ age:19 } ] } ).exec(function(err, datas){
//
// console.log(datas);
// })
// 查找年龄在19-26之间的用户
// UserModel.find( { age:{ $gt:19, $lt:26 } } ).exec(function(err, datas){
// console.log(datas);
// })
// 只显示前3条数据,即限制显示数据的数量
// UserModel.find().limit(3).exec(function(err, datas){
// console.log(datas);
// })
// 显示第4,5,6这三条数据
// skip(num)跳过几条数据 limit(num)限制显示几条数据
// UserModel.find().skip(3).limit(3).exec(function(err, datas){
// console.log(datas);
// })
// 获取用户,即数据的数量
UserModel.find().count().exec(function(err, count){
console.log(count);
})
var username = '东东';
var obj = { username:'东东' };
// 等价于:
var obj = {username: username};
// 简写写法:当对象的值放置在变量中时,如果变量的名称与对象的属性名保持一致,可以简写为下面的写法
var obj = {username};