XDH_LESSON 8

4840 ワード

nodejs操作mongodbデータベース
NodeJsはなぜmonogoodbを使っていますか?
直接にモンゴdbを使って直接データベースを操作すると、このエラーが発生する場合があります.
    Error: db object already connecting, open cannot be called multiple times
この問題の原因は、更新が速すぎたり、複数のユーザーが同時にデータベースにアクセスしたりして、データベースが閉じられず、そのErrerが現れます.データベースにアクセスするときはdb.open()を使います.アクセスしたらdb.close()が必要ですので、大量にアクセスするとエラーが発生します.monogoogleを使ってこのエラーを解決できます.一旦データベースに接続すると、dbはopen状態になります.訪問時に開けて、また閉じるルールがありません.すべてのmongodb部分はmongoogleに変えます.コード量も少ないです.
モンスターを取り付ける
     npm install mongoose
知識を広げる
mongo--dbpath=/data-port 27017/データベースポートmongodb-dbpath=./db-storage Enine=mmappv 1/解決エラー--JOURNAL--
mongodbデータベースに接続
接続を定義する必要があります.データベースを一つだけ使用すれば、mogoogle.co nnectを使用できます.追加のデータベース接続を作成する必要があれば、mongoods.reat Connectionを使用します.connectとcreateConnectionは、共にmongodbデータベースに接続でき、URIまたはパラメータ(host、database、port)の形でサポートされています.
   varmongoose=require('mongoose')
   mongoose.connect('mongodb://   /  ')
接続が確立されると、接続例のオープンイベントがトリガされる.もしあなたが使用しているのが「mogoogle.com」方式であれば、接続先は「mongoogle.com」です.そうでなければ、モングース.reat ConnectionはConnectionの対象となります.Mongooseは、データベースとの接続が確立する前にすべてのコマンドをキャッシュしています.これは、モデルを定義し、照会を実行する際に、必ずMongoDBデータベースとの接続が確立されているかどうかを確認する必要がないということです.
定義モデル
モデルは、パターンインターフェース(Schema interface)によって定義されています.例えば、var monoschema=new mongoo.Schhema(//設定データタイプname:{type:String,default:'liuhengyu')、age:{type:Number}ドキュメント構造と格納するデータの種類を定義する以外に、モードはまた、Validators(非同期)Defaults-デフォルト値Getters-メソッドSetters-Indexes-インデックスMiddleware-ミドルウェアMethods definition-方法定義Static definition-静的定義Plugins-プラグインにも使用されます.
データの挿入
    //     
     var mongoose=require('mongoose') 
     //                  test 
     var db=mongoose.createConnection('mongodb://192.168.182.128:27017/test'); 
    //        Schema  
     var monSchema=new mongoose.Schema({  name:{type:String,default:'liuhengyu'}, age:{type:Number}, sex:(type:String) }); 
    //      user,         s  users 
     var monModel=db.model('user',monSchema); 
   //       
    var content={name:"   ",age:18,sex:' '}; 
   //     
   var monInsert=new monModel(content); 
   //    ,      。        。
   monInsert.save(function(err){ 
    if(err){ 
            console.log(err); 
      } else { 
      console.log('    ') 
      } 
      //      
      db.close(); });
データを検索
    //     
     var mongoose=require('mongoose') 
     //                  test 
     var db=mongoose.createConnection('mongodb://192.168.182.128:27017/test'); 
    //        Schema  
     var monSchema=new mongoose.Schema({  name:{type:String,default:'liuhengyu'}, age:{type:Number}, sex:(type:String) }); 
    //      user,         s  users 
     var monModel=db.model('user',monSchema); 
   //       
    var content={name:"   "};
   //       
     var field={name:1,age:1,sex:1}; 
   //  
   var monInsert=new monModel(content); 
   //    ,      。        。
   monInsert.find(content,field,function(err,result){ 
    if(err){ 
            console.log(err); 
      } else { 
      console.log('result') 
      } 
      //      
      db.close(); });
データを削除
    //     
     var mongoose=require('mongoose') 
     //                  test 
     var db=mongoose.createConnection('mongodb://192.168.182.128:27017/test'); 
    //        Schema  
     var monSchema=new mongoose.Schema({  name:{type:String,default:'liuhengyu'}, age:{type:Number}, sex:(type:String) }); 
    //      user,         s  users 
     var monModel=db.model('user',monSchema); 
   //        
    var content={name:"   "};
   //  
   var monInsert=new monModel(content); 
   //    ,      。        。
   monInsert.remove(content,function(err,result){ 
    if(err){ 
            console.log(err); 
      } else { 
      console.log('result') 
      } 
      //      
      db.close(); });
データの変更
    //     
     var mongoose=require('mongoose') 
     //                  test 
     var db=mongoose.createConnection('mongodb://192.168.182.128:27017/test'); 
    //        Schema  
     var monSchema=new mongoose.Schema({  name:{type:String,default:'liuhengyu'}, age:{type:Number}, sex:(type:String) }); 
    //      user,         s  users 
     var monModel=db.model('user',monSchema); 
   //      
    var content={name:"   "};
   //      
     var hahaha={$set:{name:'   '}}; 
   //  
   var monInsert=new monModel(content);
   //    ,      。        。
   monInsert.update(content,hahaha,function(err,result){ 
    if(err){ 
            console.log(err); 
      } else { 
      console.log('result') 
      } 
      //      
      db.close(); });