ウェブサイトのユーザーデータやビジネスデータを保存するには、通常、データベースが必要です。 MongoDB と Node.js は、ドキュメントをベースとした非リレーショナル データベースであり、追加、削除、変更、クエリなどのデータベース管理コマンドが BSON (JSON の軽量バイナリ形式) で保存されるため、特によく一致します。 JavaScript の構文と非常によく似ています。 Node.js で MongoDB のデータにアクセスすると、家族のような気分になり、とても和気あいあいとします。
データベースとして MongoDB も使用する予定です。
MongoDB は、データの記述と保存にコレクションとドキュメントを使用します。コレクションはテーブルに相当し、ドキュメントは行に相当します。ただし、MySQL などのリレーショナル データベースでは、テーブル構造は固定されています。複数の列で構成され、行は同じですが、MongoDB はコレクション内の複数のドキュメントが異なる構造を持つことができるため、より柔軟です。
Mongo をインストールします
詳細なガイドはこちら (MongoDB の公式ドキュメント): https://docs.mongodb.org/manual/tutorial/install-mongodb-on-windows/。
https://www.mongodb.org/downloads にアクセスして、インストール パッケージをダウンロードします。Windows システムは、「Windows 64 ビット 2008 R2+」バージョンを選択しました。
インストールは非常に簡単で、デフォルトでインストールすることも、G ドライブの MongoDB ディレクトリにインストールすることもできます。インストール後のディレクトリ構造は次のようになります: G:MongoDBServer3.0。
Mongod、mongo、その他のツールはすべて 3.0 ディレクトリの下の bin ディレクトリにあります。
開始
MongoDB を使用するには、データを保存するフォルダーを指定する必要があります。G:MongoDB の下に db という名前のフォルダーを作成しました。
cmd を開き、G:MongoDBServer3.0bin ディレクトリに入り、「mongod –dbpath=G:MongoDBdb」を実行すると、MongoDB が起動し、次の図が表示されます。
MongoDB が開始されると、ポートでリッスンし、クライアントの接続を待ちます。上の図からわかるように、デフォルトのリッスン ポートは 27017 です。このポートは「-port」オプションを使用して変更できます。たとえば、「mongod –port 28018 –dbpath=G:MongoDBdb」コマンドは MongoDB を起動し、ポート 28018 をリッスンします。
MongoDB を起動すると、mongo (対話型シェル) を使用してデータベースを管理できるようになります。 bin ディレクトリで mongo を直接実行すると、次の図が表示されます:
Mongo Shell はデフォルトでテスト データベースに接続し、help を入力してヘルプを表示できることも示します。 「help」と入力して Enter キーを押すと、使用可能なコマンドが表示されます。
mongod はデフォルトでは認証なしで起動し、クライアントが接続されると、データベースの作成、追加、削除、変更などを自由に操作できることに注意してください。ユーザーの権限を制限したい場合は、ここで直接設定していきます。
mongoose ドライバーをインストールします
GIT ツールをインストールします:
github Web サイトは、すべてのサブモジュールをパッケージ化したソース コード パッケージの直接ダウンロードをサポートしていないため、git ツールを介してすべてのソース コードをチェックアウトする必要があります。 http://code.google.com/p/msysgit/downloads/list から、Windows プラットフォームの Git クライアント ツールである msysgit をダウンロードできます (最新バージョンのファイルは Git-1.7.7.1-preview20111027.exe)。ダウンロード後、ダブルクリックしてインストールしてください。
NPM ソース コードをダウンロード:
コマンド ライン ツール (CMD) を開き、次のコマンドを実行して、msysgit を通じてすべての NPM ソース コードと依存コードをチェックアウトし、npm をインストールします。
git clone --recursive git://github.com/isaacs/npm.git cd npm node cli.js install npm -gf
このコードを実行する前に、node.exe がnode.msi を通じてインストールされているか、PATH 環境変数に含まれていることを確認してください。このコマンドは、npm を PATH 環境変数に追加するため、どこでも npm コマンドを実行できるようになります。インストール中に権限エラーが発生した場合は、cmd コマンド ライン ツールが管理者として実行されていることを確認してください。インストールが成功したら、次のコマンドを実行します:
npm install underscore
戻る:
underscore@1.2.2 ./node_modules/underscore
このようにして、Windows プラットフォームに NPM がインストールされ、その後 mongoose をインストールできるようになります
npm install mongoose
例
いくつかの基本的な操作と命令はコード コメントに書かれています:
// mongoose 链接 var mongoose = require('mongoose'); var db = mongoose.createConnection('mongodb://127.0.0.1:27017/NodeJS'); // 链接错误 db.on('error', function(error) { console.log(error); }); // Schema 结构 var mongooseSchema = new mongoose.Schema({ username : {type : String, default : '匿名用户'}, title : {type : String}, content : {type : String}, time : {type : Date, default: Date.now}, age : {type : Number} }); // 添加 mongoose 实例方法 mongooseSchema.methods.findbyusername = function(username, callback) { return this.model('mongoose').find({username: username}, callback); } // 添加 mongoose 静态方法,静态方法在Model层就能使用 mongooseSchema.statics.findbytitle = function(title, callback) { return this.model('mongoose').find({title: title}, callback); } // model var mongooseModel = db.model('mongoose', mongooseSchema); // 增加记录 基于 entity 操作 var doc = {username : 'emtity_demo_username', title : 'emtity_demo_title', content : 'emtity_demo_content'}; var mongooseEntity = new mongooseModel(doc); mongooseEntity.save(function(error) { if(error) { console.log(error); } else { console.log('saved OK!'); } // 关闭数据库链接 db.close(); }); // 增加记录 基于model操作 var doc = {username : 'model_demo_username', title : 'model_demo_title', content : 'model_demo_content'}; mongooseModel.create(doc, function(error){ if(error) { console.log(error); } else { console.log('save ok'); } // 关闭数据库链接 db.close(); }); // 修改记录 mongooseModel.update(conditions, update, options, callback); var conditions = {username : 'model_demo_username'}; var update = {$set : {age : 27, title : 'model_demo_title_update'}}; var options = {upsert : true}; mongooseModel.update(conditions, update, options, function(error){ if(error) { console.log(error); } else { console.log('update ok!'); } //关闭数据库链接 db.close(); }); // 查询 // 基于实例方法的查询 var mongooseEntity = new mongooseModel({}); mongooseEntity.findbyusername('model_demo_username', function(error, result){ if(error) { console.log(error); } else { console.log(result); } //关闭数据库链接 db.close(); }); // 基于静态方法的查询 mongooseModel.findbytitle('emtity_demo_title', function(error, result){ if(error) { console.log(error); } else { console.log(result); } //关闭数据库链接 db.close(); }); // mongoose find var criteria = {title : 'emtity_demo_title'}; // 查询条件 var fields = {title : 1, content : 1, time : 1}; // 待返回的字段 var options = {}; mongooseModel.find(criteria, fields, options, function(error, result){ if(error) { console.log(error); } else { console.log(result); } //关闭数据库链接 db.close(); }); // 删除记录 var conditions = {username: 'emtity_demo_username'}; mongooseModel.remove(conditions, function(error){ if(error) { console.log(error); } else { console.log('delete ok!'); } //关闭数据库链接 db.close(); });