MongoDBのとマングースの使用
:githubのは、より多くのプロジェクトを見たいと*本稿では、このシリーズの第3は、あなたが直接行くことができますhttps://github.com/hellozhangran/happy-egg-server
以上の説明を見ることができます:HTTPS://www.cnblogsを。 COM / zhangran / P / 11963616.html
MongoDBの
MongoDBは、我々は実用的な操作または使用される最も可能性の高い部分に直接話し、その背景、長所と短所についての典型的な非リレーショナルデータベース、プレゼンテーションはここで詳細には触れていません。
一般的なコマンドをMongoDBの
mongod --config /opt/mongodb/mongod.conf
スタートは、サービスをのmongod。- あなたがバックグラウンドで起動したい場合は、真=、mongod.confを変更フォークを追加する必要があり、その後、開始します。
- まず、バックグラウンドで実行されているサービスをオフにし、バックグラウンドで実行されているすべてのサービスをチェックしたいのmongod
lsof -i
、PID番号のmongodを見つけ、kill yourpid
mongo
環境へのモンゴshow dbs
すべてのデータベースを見ますuse test
テスト・データベースにdb.createCollection('user')
作成user
コレクション- 簡単に言うと概要概念セット、モンゴ非リレーショナルデータベースは、概念がテーブルに存在しない、とテーブルに対応するように設定されています。もちろん、ないテーブルの収集、およびテーブルは大きく異なり、構造のランクのないテーブルがありません、あなたは、単にリストとしてコレクションを入れて、一つのオブジェクトを配置します一覧することができます。そこは、そのJSONデータ・フォーマットのほとんどのように発見されていません。
db.user.insert({name: 'zhangsan', age: 21, sex: 'male'})
データセットに挿入db.user.find()
ユーザーのすべてのデータは、コレクションを表示しますdb.user.find().pretty()
嬉しいポイントの形式でデータを表示しdb.user.find({name: 'zhangsan'})
最初のパラメータはの=「zhangsan」名前全体を満たしている表示データ選択条件で検索db.user.find({name: 'zhangsan'}, {name: 1})
最初のパラメータは1が表示されていない0で、修飾名を表示するように指定した検索表示です。
使用マングース
マングースは、簡単に使用nodejs動作するMongoDBに、nodejsツールライブラリです
1.最初の使用は、データベース接続にMongoDBをマングース
const mongoose = require('mongoose');
// 创建一个连接,并监听各种事件,在执行connect操作时,各事件会视具体情况而触发。
mongoose.connection
.on('error', function (err) {
// 数据库连接失败时触发
console.log('connect error: ', err);
})
.on('disconnected', function () {
// 数据库断开时触发,断开重连的逻辑可以放在这里。
})
.once('open', function () {
// 数据库连接成功时触发,express开启listen的逻辑可以放在这里。
});
// 启动mongod服务默认是运行在127.0.0.1上,所以下面路径是localhost
// test是数据库名,如果有则连接,如果无则创建
mongoose.connect('mongodb://localhost/test', {
useNewUrlParser: true,
useUnifiedTopology: true
});
2.スキーマとモデル
スキーマでのマングースでは、モデルは、非常に重要な概念です。モデルは、対応するセットのMongoDB collection
、タイプフィールドであり、対応する構造のスキーマのセットを、フィールドは、デフォルト値等があるかどうか、必要に応じて、結合されます。
const UserSchema = mongoose.Schema({
name: String,
age: Number,
sex: Boolean
});
// Schema的静态方法
UserSchema.statics.findUserByAge = function (age) {
// 用then来拿到结果,如findUserByAge(21).then((res) => {})。
// 也可以在find第二个参数传回调函数
return this.find({'age': age});
}
// Schema的实例方法
UserSchema.methods.findUserByName = function(name) {
return this.model('User').find({ name: name });
};
// 创建一个Model,第三参数指定mongodb中collection的名字,如果不传则默认为变为复数(即Users)
const User = mongoose.model('User', UserSchema, 'user');
// 创建一条数据
// 1. 直接用User创建
User.create({name: 'zhangsan', age: 27, sex: true}, function(err, info) {
console.log(info);
});
// 2. 新创建一个对象再添加数据到数据库
// 再次说明下现在mongoose默认是支持promise方式的,可以使用then 或 回调函数的方式
var person = new User({name: 'lisi', age: 20, sex: false});
person.save().then(res => {
console.log(res);
})
// 调用Schema中定义的静态方法,可以通过User直接调
User.findUserByAge(21);
// 调用Schema中定义的实例方法方法,先实例化再调
const user = new User();
user.findUserByName('zhangsan');
// 删除数据,删除符合条件的一条
User.deleteOne({name: 'lisi'}).then();
// 删除符合条件的所有数据
User.deleteMany({age: 20}).then();
// 注意:remove()方法已经被弃用了!
最後に、マングースのAPIドキュメントを添付し、他の方法を使用することが記載されていません。
ALL
フォローアップの可能性が拡大し続けることで、上記の現在のプロジェクトが使用されてきています。
- ドッキングウィンドウとMongoDBの
- 災害復旧のMongoDBを自動的にコピーセット