天天看點

MongoDB資料庫的增删改查

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