データベースmongodbの使用(前後端非分離項目・中)


1.ここではmongodyを紹介し、mongodyは非関連型のデータベースであり、結合性が低く、拡張しやすく、非関連性データベースが最も関連性データベースに似ているデータベースであり、キー値を用いてデータを格納し、ACID特性をサポートせず、sql層の解析を提供せず、読み書き性能が高く、厳密にはデータベースではなく、データ構造化記憶方法の集合であるべきである.2.mangodbのダウンロードインストールは面倒ですが、インストールディレクトリのパスは必ず覚えておいてください(私は半日探しました)、任意のディスクに新しいフォルダ(data)、新しいフォルダに新しいフォルダ(データベース名私のdbと申します).端末を開いてインストールディレクトリのbinファイルに入り、「mongod--dbpath d:datadb」と入力すると、多くのコードが飛び出し、成功したかどうかをどのように判断するか、前の端末が別の端末を閉じないでbinディレクトリに入ってmongoを入力するとバージョンが表示され、データベース操作に入ります.操作ができれば成功し、逆に失敗します.3.mongodbの共通コマンドuse dbNameこの行のコードがあればデータベースに入り、なければ作成してから現在のデータベースdbを表示する
すべてのデータベースを表示(空のデータベースを表示しない)show dbs
削除库慎用!!!!!!!!!!!!!!!db.dropDatabase()
コレクションdbを作成する.createcollection(name,options)name:コレクション名、文字options:オプション、オブジェクト設定可能属性:cappedブール(オプション)trueの場合、固定コレクションを作成します.固定コレクションとは、最大値に達すると最も古いドキュメントが自動的に上書きされる固定サイズのコレクションです.この値がtrueの場合、sizeパラメータを指定する必要があります.AutoIndexIdブール(オプション)trueのように、自動的に_idフィールドはインデックスを作成します.デフォルトではfalse size値(オプション)固定セットの最大値を千バイト(KB)で指定します.cappedがtrueの場合も、このフィールドを指定する必要があります.max値(オプション)固定セットに含まれるドキュメントの最大数を指定します.ここでcappedとsizeは併用する削除セットである:db.colName.drop()/colNameは、あなたが作成したコレクション名で、すべてのコレクションdbを表示します.colName.find()現在のコレクション名dbを表示する.getCollectionNames() 4.データの操作ここでの情報データの設計は必要に応じて、後期に増加する現象(キー値対)のユーザー名:userNameパスワード:password年齢:age性別:sex電話:number 1)は発生しないほうがよい.データの追加挿入単条:db.colName.insert({})複数挿入:db.colName.insert([{},{},{}...])挿入見出し:db.colName.Insertone({})複数挿入:db.colName.insertMany([{},{},{}…]) 2) .データの削除単一データ:db.colName.deleteOne({key:val})複数のデータを削除する:db.colName.deleteMany({key:val})すべてのデータを削除:db.colName.deleteMany({})3)データの修正リストデータ:db.colName.updateOne({key:val},{$set:{key1:newVal,key2:newVal}})
複数のデータの変更:db.colName.updateMany({key:val},{$set:{key1:newVal,key2:newVal}})
Numは正自増、負自減自増/自減の単一データ:db.colName.updateOne({key:val},{$inc:{key1:num}})
自増/自減複数データ:db.colName.updateMany({key:val},{$inc:{key1:num}})
4)データの検索基本はすべてのデータを検索する:db.colName.find()
クエリーのすべてのデータのフォーマット:db.colName.find().pretty()
キー値対条件クエリーを指定する:db.colName.find({key:val})
条件クエリー(すべてのデータを{}で表すことができる)を指定し、フィールドの表示:dbを制限します.colName.find({key:val},{userName:1,pass:1})inclusionモードで、返されるキーを指定し、他のキーを返さない
db.colName.find({key:val},{userName:0,pass:0})exclusionモード、返さないキーを指定し、他のキーを返す注意:idはデフォルトで返され、必要でない場合はアクティブに設定する必要があります.id:0
ページングクエリー:db.colName.find({key:val}).limit(num).skip(start)num:個数startを表す:開始インデックスを表し、デフォルトは0
ソートクエリー:db.colName.find({key:val}).sort({key:1})1昇順、-1降順
区間照会:-価格区間db.colName.find({key:{$lt:val 1,$gt:val 2})はval 1より小さく、val 2より大きい
db.colName.find({key:{$lte:val 1,$gte:val 2})はval 1以下、val 2以上
ファジイクエリ:-検索に正則が使用されましたよ
db.colName.find({key:/val/})クエリーkeyにvalが含まれているデータ
db.colName.find({key:/^val/})クエリーkeyにvalが含まれ、valで始まるデータ
または照会:-ユーザー名または携帯電話番号のログイン
db.colName.find({$or:[{key 1:val 1},{key 2:val 2}])クエリーkey 1がval 1またはkey 2がval 2のデータ
クエリー:db.colName.find({key 1:val 1,key 2:val 2})クエリーkey 1がval 1でkey 2がval 2のデータ
指定フィールドのデータを取得する:-dbを分類する.colName.distinct(「key」)は、指定したフィールドのすべてのデータを取得し、リロードして配列で返します.
5.端末操作データベースの常用操作は以下にnode操作データベース1)について述べる.インストールnodeのmongodbに対するサポートNodeJSにおけるMongoDBドライバ:mongoesはmongose npm install mongose-S 2をダウンロードしインストールする).データベース(db.js)を接続して選択し、mongoseモジュールconst mongose=require(「mongose」)を導入します.mongodbに接続し、指定したデータベース:dbName mongoseを選択します.connect(“mongodb://localhost:27017/dbName”); 接続成功connection.on(「connected」()=>{})接続windowsインストールのmongodbを切断ctrl+cで接続を切断することはできません.kill-9は使用しないでください.そうしないとデータベースに問題が発生します.アップルシステムは正常に接続を切断することができます.windowsが本当にオフにする場合は、タスクマネージャに入ってmongodbを見つけるプロセスをオフにすればいいです.どうせ使用に影響しません.mongoose.connection.on(「disconnected」,()=>{})接続エラーmongose.connection.on("error",()=>{})接続に成功すると、モジュールが露出する:module.exports = mongoose 3).集合を作成データベースに導入する接続const mongose=require("./db.js")集合に使用する汎用オブジェクトを作成し、フィールド名とフィールド値を入れ、必要に応じて設計するデータconst Schema=new mongose.Schema({ userId:{type:String}, userName:{type:String}, pass:{type:String}, age:{type:Number}, city:{type:String}, tel:{type:String} }); コレクションを作成すると、モジュールが露出します.exports = mongoose.model(“users”, userSchema); 1番目のパラメータはセット名を設定、2番目のパラメータは前に作成するセット4)である.データ導入を挿入集合を作成する(集合の作成に接続データベースを導入する)const User=require(./users.js);挿入構文:単一のデータを挿入する:User.InsertMany({},(err)=>{})複数のデータを挿入する:User.insertMany([{},{},...],(err)=>{})注意:データ操作は非同期操作であり、コールバック関数に挿入結果を表示する必要がある5).データ導入の変更集合の作成(集合の作成で接続データベースが導入された)const User=require(./users.js);構文の変更:1つを変更:User.updateOne({key: val}, { KaTeX parse error: Expected 'EOF', got '}' at position 16: set: {kay: val}}̲, (err)=>{})修正...inc:{kay:val},( err)=>{})修正複数:User.updateMany({key: val}, { KaTeX parse error: Expected 'EOF', got '}' at position 16: set: {kay: val}}̲, (err)=>{})修正...inc:{kay:val},(err)=>{})6).削除データ導入作成コレクション(作成コレクションで接続データベースが導入されている)const User=require(./users.js);削除構文:1つ削除:User.deleteOne({key:val},(err)=>{})複数削除:User.deleteMany({key:val},(err)=>{})すべて削除:User.deleteMany({}, (err)=>{}) 7) .クエリー・データのインポート作成コレクション(作成コレクションで接続データベースが導入されている)const User=require(./users.js);クエリー構文:
  • すべて検索:
  • User.find({},{},(err, data)=>{})
  • パラメータ1:オブジェクト、クエリー条件
  • パラメータ2:オブジェクト、戻るフィールド
  • パラメータ3:関数、クエリー終了後に実行
  • err:エラーメッセージ
  • data:クエリーされたデータ


  • コールバック関数に類似する方法:exec User.find({},{}).exec((err,data)=>{})区間検索:User.find({key: {$lte:maxVal, $gte:minVal}},{}).exec((err,data)=>{})ファジイ検索:User.find({key:/^枚/},{}).exec((err,data)=>{})注意:^は、クエリーの内容が変数である場合、eval変換:eval("/"+変数名+"/")を使用してデータの合計数を検索する必要があることを示します.user.countDocuments().exec((err,data)=>{})指定フィールドのデータを検索:-分類user.distinct(「フィールド名」).exec((err, data)=>{}) 8).カプセル化データベース(sql.js)削除変更
  • module.exports = {
        AddData(collectName,data){
            return  new Promise((resolve,reject)=>{
                collectName.insertMany(data,(err)=>{
                    if(!err){
                        resolve()
                    }else{
                        reject(err)
                    }
                })
            })
        },
        delData(collectName,where,num=1){
            let type = num ===1 ? "deleteOne" : "deleteMany";
            return  new Promise((resolve,reject)=>{
                collectName.[type](where,(err)=>{
                    if(!err){
                        resolve()
                    }else{
                        reject(err)
                    }
                })
            })
        },
        upData(collectName,where,what,num=1){
            let type = num ===1 ? "updataOne" : "updataMany";
            return  new Promise((resolve,reject)=>{
                collectName.[type](where,what,(err)=>{
                    if(!err){
                        resolve()
                    }else{
                        reject(err)
                    }
                })
            })
        }, 
        getData(collectName,where={}){
            return new Promise((resolve,reject)=>{
                collectName.find(where,{_id:0,_v:0}).exec((err,data)=>{
                    if(!err){
                        resolve(data)
                    }else{
                        reject(err)
                    }
                })
    
            }) 
        },
        getSortData(collectName,s,where={}){
            return new Promise((resolve,reject)=>{
                collectName.find(where,{_id:0,_v:0}).sort(s).exec((err,data)=>{
                    if(!err){
                        resolve(data)
                    }else{
                        reject(err)
                    }
                })
    
            }) 
        },
    
        getPageData(collectName,num,index,where={}){
            return new Promise((resolve,reject)=>{
                collectName.find(where,{_id:0,_v:0}).limit(num).skip(num*index).exec((err,data)=>{
                    if(!err){
                        resolve(data)
                    }else{
                        reject(err)
                    }
                })
    
            }) 
        },
        getDataLen(collectName){
            return new Promise((resolve,reject)=>{
                collectName.countdocument().exec((err,data)=>{
                    if(!err){
                        resolve(data)
                    }else{
                        reject(err)
                    }
                    
                })
            })
        },
        getkind(collectName,col){
            return new Promise((resolve,reject)=>{
                collectName.distinct(col,(err,data)=>{
                    if(!err){
                        resolve(data)
                    }else{
                        reject(err)
                    }
                })
            })
        }
    
    }
    

    ここではpromiseの低減パラメータpromiseの使用条件を用いる:コールバックがあり、非同期であり、処理に成功したpromiseの実行が必要になると返され、そのインスタンスメソッドthen()を用いることができる.catch()はpromiseのallも使いやすく、接尾辞で後で要求されたデータを処理し続けることができます.