mongoDB數據庫的簡單操做

配置

  • 打開MongoDB-bin文件夾,進入命令行 
    • data文件夾要存在
mongod --dbpath=E:\data

 

  • 從新打開命令行,輸入mongo

經常使用命令

  • db 查看當前數據庫
  • db.user.insert({}); 向當前數據庫中的user集合中插入一個文檔
  • db.user.find() 查看當前數據庫中user集合的所有文檔

經過NODE對數據庫進行操做

  • 安裝模塊
    npm install mongoose

     

  • 引入模塊
var mongoose=require('mongoose')

 

  • 鏈接數據庫
mongoose.connect('mongodb://127.0.0.1:27017')
//27017---端口號

 

 
  • 定義數據庫的骨架模型,規定了集合中文檔的字段名和字段類型
var UserSchema=new mongoose.Schema({
    username:String,
    age:Number,
    level:Number
},{collection:'user'})
//collection:在數據庫中存儲的集合的名稱,沒有指定connection,集合名=模型名->小寫->複數  Person->person->people
//注意:若是不加字段就不能添加此字段

 

  • 定義能夠操做數據庫的模型,能夠定義多個模型,可是名字不能夠相同
var User=mongoose.model('User',UserSchema)

 

 

向集合中插入文檔

  • 這是個異步的方法
User.create({username:'zfpx',age:1},function(err,result)){
    console.log(result);
}

 

 
  • 能夠存放數組批量保存
var Person=mongoose.model('Person',personSchema);
var users=[];
for(var i=0;i<=10;i++){
    users.push({name:'zfpx'+i,age:i})
}
Person.creat(users,function(err,docs){
    console.log(docs)
})

 

 

查詢數據庫中的數據

  • 通常來講返回整個文檔用docs,返回更改後的字段result
  • 查找名字是zfpx1的
User.find({username:'zfpx1'},function(err,docs){
    console.log(docs)
})

 

 
  • 查找全部以zfpx開頭的
User.find({username:/^zfpx/},function (err,docs) {
    console.log(docs)
});

 

 
  • 查找age>3的
 
  • 查找age<3的
User.find({age:{$lt:3}},function (err,docs) {
    console.log(docs)
});

 

 

修改數據

  • 將大於3的數據添加一個level
User.update({age:{$gt:3}},{level:1},{multi:true},function (err,result) {
    console.log(result)
});

 

 
  • 默認只更新匹配後的第一條
  • multi:true}表示匹配到多少條更新多少條
  • {$inc:{level:1}} -> 在原來的基礎上增長1,遞增
User.update({age:{$gt:3}},{$inc:{level:1}},{multi:true},function (err,result) {
    console.log(result)
})

 

 
  • 參數 
    • param1:修改的範圍
    • param2:更改的內容
    • param3:回調函數
  • { ok: 1, nModified: 1, n: 2 } 
    • n:匹配到的記錄數
    • nModified :實際更新的記錄數

刪除數據

User.remove({age:{$gt:1}},function (err,result) {
   console.log(result.result)
});

 

 

屬性過濾

find:查詢全部javascript

  • name:1表示name須要顯示,其餘的不顯示,可是_id會自動顯示,因此能夠將_id設置爲0,不顯示
Person.find({},{name:1,_id=0},function(err,docs){

})

 

 

findOne:最多查找一個php

Person.findOne({username:'zfpx',age:1},function(err,docs){
if(err){

}else{
if(docs){
console.log('登錄成功')
}else{
consloe.log('用戶名或密碼不正確')
}
}
})

findById:根據ID查找css

Person.findById(_id,function(err,docs){
    if(err){

    }else{
        if(docs){
            console.log('登錄成功')
        }else{
            consloe.log('用戶名或密碼不正確')
        }
    }
})

 

 

遊標

  • skip:跳過指定的條數
  • limit:限定返回的條數,限定返回的最大條數
  • sort(1):排序,1是順序,0是反序,不然沒有順序
  • exec:此時纔會執行
  • 返回一個對象
//每頁的條數
var pageSize=3;
//當前是第幾頁
var pageNumber=2;
Person.find().sort({age:1}).skip(3).limit(3).exec(function (err,docs) {
    console.log(docs)
});

 

 

插件

  • 把會話信息保存在mongodb數據庫中,要依賴session,session中間件用於保存用戶數據
var session=require('express-session');
var MongoStore=require('connect-mongo')(session);
app.use(session({
    resave:true,
    saveUninitialized:true,
    secret:'zfpx',
    <!--指定會話的存儲位置-->
    store:new MongoStore({
        url:'mongodb://127.0.0.1/201614blog'
    })
}));

 

 
  • flash 是 session 中一個用於存儲信息的特殊區域。消息寫入到 flash 中,在跳轉目標頁中顯示該消息。flash 是配置 redirect 一同使用的,以確保消息在目標頁面中可用。 
    • 會增長req.flash,存一次取一次,以後就被銷燬,依賴session
    • 存:req.flash(type,msg);取:req.flash(type);
    • 能夠屢次寫入,因此這是一個數組,因此取得時候轉爲字符串,通常寫在中間件中屢次使用
      var flash=require('connect-flash');
      app.use(flash());
       User.create(user,function (err,docs) {
              if(err){
                  //req.session.error='註冊失敗'
                  req.flash('error','註冊失敗');
                  res.redirect('back');//從哪裏來回哪裏去
              }else {
                  req.flash('success','註冊成功');
                  res.redirect('/user/signin')
              }
          });
      app.use(function (req,res,next) {
          res.locals.success=req.flash('success').toString();
          res.locals.error=req.flash('error').toString();
          next();
      });

       

 

MongoDB文檔的主鍵_id

  • 在MongoDB中,若是不特別指定,每一個文檔都會生成一個惟一的ObjectId做爲其主鍵_id的值。MongoDB中數據的基本單元稱爲文檔(Document)。文檔是MongoDB的核心概念,多個鍵極其關聯的值有序的放置在一塊兒即是文檔。
  • 在多個骨架中,咱們可能須要用到別人家的主鍵,方法是:
  • var ObjectId=mongoose.Schema.Types.ObjectId;
    var UserSchema=new mongoose.Schema({
    
    });
    
    var ArticleSchema=new mongoose.Schema({
        createAt:{type:Date,default:Date.now},
        <!-- 由於別人家主鍵的類型是ObjectId,ref:引用 -->
        //ref:'User'引用User的主鍵
        user:{type:ObjectId,ref:'User'}
    });
相關文章
相關標籤/搜索