nodejs 操作 mongodb 数据库

操作手册:

  npmjs.com

    搜索: mongodb

使用官方的  mongodb 包来操作

   https://github.com/mongodb/node-mongodb-native     //比较麻烦

使用第三方包  mongoose 来操作

  mongoose  基于 MongoDB 官方的 mongodb 包再一次做了封装

  官方网址:   http://mongoosejs.com

mongo数据库连接

var mongoose = require('mongoose')

var Schema = mongoose.Schema


//连接数据库
//指定连接的数据库不需要存在,当你插入第一条数据之后就会自动创建
mongoose.connect('mongodb://localhost/itcast')


// 设计集合结构(表结构)
// 字段名称就是表结构中的属性名称
// 值
// 约束的目的是为了保证数据的安全性, 不要有脏数据

/*var blogSchema = new Schema({
title : String,
author: String,
body : String,
comments: [{body : String, date : Date}]
hidden : Boolean,
meta : {
votes : Number,
favs : Number
}
});

*/

增加数据与表结构设计

var mongoose = require('mongoose')

var Schema = mongoose.Schema


//连接数据库
//指定连接的数据库不需要存在,当你插入第一条数据之后就会自动创建
mongoose.connect('mongodb://localhost/itcast')

// 设计集合结构(表结构)
// 字段名称就是表结构中的属性名称
//// 约束的目的是为了保证数据的安全性, 不要有脏数据

/*var blogSchema = new Schema({
    title : String,
    author: String,
    body  : String,
    comments: [{body : String, date : Date}]
    hidden : Boolean,
    meta : {
        votes : Number,
        favs : Number
    }
});

 */


 // 2.设计文档结构
var userSchema = new Schema({
    username : {
        type : String,
        required : true  //必须有
    },
    password : {
        type : String,
        required : true
    },
    email : {
        type : String
    }
})

// 3.将文档结构发布为模型
//      mongoose.model 方法就是用来将一个架构发布为 model
//      第一个参数: 传入大写名词单数字符用来表示你的数据名称
//      例如 : 这里的User 最终会变为 users 集合名称
//      第二个参数: 架构 Schema
//
//      返回值: 模型构造函数
var User = mongoose.model('User', userSchema)

// 4. 当我们有了模型构造函数之后, 就可以使用这个构造函数对 users 


// 增加数据

var admin = new User({
    username: 'admin',
    password: '123456',
    email:  'admin@admin.com'
})

admin.save( function (err, ret) {
    if (err) {
        console.log('保存失败')
    } else {
        console.log('保存成功')
        console.log(ret)
    }
})


 

 数据查询

var mongoose = require('mongoose')

var Schema = mongoose.Schema


//连接数据库
//指定连接的数据库不需要存在,当你插入第一条数据之后就会自动创建
mongoose.connect('mongodb://localhost/itcast')

// 设计集合结构(表结构)
// 字段名称就是表结构中的属性名称
//// 约束的目的是为了保证数据的安全性, 不要有脏数据

/*var blogSchema = new Schema({
    title : String,
    author: String,
    body  : String,
    comments: [{body : String, date : Date}]
    hidden : Boolean,
    meta : {
        votes : Number,
        favs : Number
    }
});

 */


 // 2.设计文档结构
var userSchema = new Schema({
    username : {
        type : String,
        required : true  //必须有
    },
    password : {
        type : String,
        required : true
    },
    email : {
        type : String
    }
})

// 3.将文档结构发布为模型
//      mongoose.model 方法就是用来将一个架构发布为 model
//      第一个参数: 传入大写名词单数字符用来表示你的数据名称
//      例如 : 这里的User 最终会变为 users 集合名称
//      第二个参数: 架构 Schema
//
//      返回值: 模型构造函数
var User = mongoose.model('User', userSchema)

// 4. 当我们有了模型构造函数之后, 就可以使用这个构造函数对 users 


// 增加数据

// var admin = new User({
//     username: 'admin',
//     password: '123456',
//     email:  'admin@admin.com'
// })

// admin.save( function (err, ret) {
//     if (err) {
//         console.log('保存失败')
//     } else {
//         console.log('保存成功')
//         console.log(ret)
//     }
// })

// 查询数据
// 查询所有
// User.find(function (err, ret) {
//     if ( err ) {
//         console.log( err )
//     } else {
//         console.log( ret )
//     }
// })
 

// 按条件查询

User.find({ username : 'zs' }, function (err, ret) {
    if (err) {
        console.log(err)
    } else {
        console.log( ret )
    }
})

// 按条件查询单个
User.findOne({ username : 'zs'}, function (err, ret) {
if (err) {
console.log(err)
} else {
console.log( ret )
}
})
 

 删除数据

var mongoose = require('mongoose')

var Schema = mongoose.Schema


//连接数据库
//指定连接的数据库不需要存在,当你插入第一条数据之后就会自动创建
mongoose.connect('mongodb://localhost/itcast')


 // 2.设计文档结构
 var userSchema = new Schema({
    username : {
        type : String,
        required : true  //必须有
    },
    password : {
        type : String,
        required : true
    },
    email : {
        type : String
    }
})


// 增加数据

// var admin = new User({
//     username: 'zs',
//     password: '123456',
//     email:  'admin@admin.com'
// })

// admin.save( function (err, ret) {
//     if (err) {
//         console.log('保存失败')
//     } else {
//         console.log('保存成功')
//         console.log(ret)
//     }
// })


var User = mongoose.model('User', userSchema)
// 删除数据

User.remove({
    username : 'zs'
}, function (err, ret) {
    if ( err ) {
        console.log(err)
    } else {
        console.log('删除成功')
        console.log(ret)
    }
})

var id = '59f9eb4cc2283e1bac7be51d';
var removestr = {'username': 'zs'};

User.findByIdAndRemove(id,  removestr, function(err, res){
    if (err) {
            console.log("Error:" + err);
    }
    else {
        console.log("Res:" + res);
    }
})


var removestr = {'username': 'zs'};

User.findOneAndRemove(removestr, function(err, res){
    if (err) {
            console.log("Error:" + err);
    }
    else {
        console.log("Res:" + res);
    }
})

更新数据

var mongoose = require('mongoose')

var Schema = mongoose.Schema


//连接数据库
//指定连接的数据库不需要存在,当你插入第一条数据之后就会自动创建
mongoose.connect('mongodb://localhost/itcast')


 // 2.设计文档结构
 var userSchema = new Schema({
    username : {
        type : String,
        required : true  //必须有
    },
    password : {
        type : String,
        required : true
    },
    email : {
        type : String
    }
})





var User = mongoose.model('User', userSchema)

// 更新数据


var wherestr = {'username': 'admin'};

// 执行更新数据
var updatestr = {'password': 'abcdef'};

User.update(wherestr, updatestr, function(err, res) {
if (err) {
    console.log(err);
} else {
    console.log(res);
}
});

User.findOneAndUpdate({username : 'admin'},{
    password : 'admin123'
},function (err, ret) {
    if (err) {
        console.log(err)
    } else {
        console.log('更新成功')
        console.log(ret)
    }
})


User.findByIdAndUpdate('5d528b7239a9cf20888515d5',{
    password : 'admin123'
},function (err, ret) {
    if (err) {
        console.log(err)
    } else {
        console.log('更新成功')
        console.log(ret)
    }
})
原文地址:https://www.cnblogs.com/jasonLiu2018/p/11299174.html