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