MongoDB数据库的增删改查

本文详细介绍了MongoDB数据库的增删改查操作,通过实例代码展示如何进行数据库交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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};


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值