mongose学習ノート
12449 ワード
一、紹介
1.概要
mongoseモジュールは、nodeとデータベースmongodbとの間の操作を簡略化するために使用され、簡単なAPIを通じてデータベースを操作する行為をjavascriptオブジェクトを操作する行為に変えることを目的としている(nodeJSを用いて開発されているため、javascriptに対してより親近感を持つことが多い).主なAPIは3つあります. mongoose.接続データベースはmongodbにデータベースがない場合に自動的に作成されます.注意:mongodbはmysqlと同じで、多くのサブデータベースを作成できます.各サブデータベースの下に独自のテーブルがあります. mongoose.Schema mongoseモジュールは、サブデータベースの下にあるテーブルを作成します. mongoose.Model mongoseモジュールでは、テーブルに対応するjavascriptオブジェクトを作成し、このオブジェクトを操作することでデータベースの削除を完了できます.
2.環境要求
使用
nodejsインストールチュートリアル
【mongodb+クライアント】図文インストールチュートリアル
3.インストール
mongoseはサードパーティ製パッケージで、使用前にインストールします.
二、APIドキュメント
1.データベースへの接続
説明: この部分は通常固定表記である
2.データベース表の作成
上のコードの String Number Boolean | Bool Array Buffer Date ObjectId | Oid Mixed
3.テーブルに対応するjavascriptオブジェクトの作成
4.データを追加4.1新規APIの 4.2新規APIの 5.データの変更5.1 APIの修正 5.2 APIの修正
6.データの削除6.1 APIを削除する 6.2 APIの修正
7.クエリーデータ7.1条件照会 conditionクエリー条件、対象フォーマット、クエリー条件が書かれていない場合はクエリーのすべてを表し、以下の例ではクエリー年齢が23歳のデータである. showfields表示フィールド、オブジェクトフォーマット、フィールド値1表示、値0表示非表示 callbackコールバック関数.resはクエリされたデータ、配列フォーマットである. 7.2条件演算子データベースにおいて、条件演算子とその重要性、例えば、20歳以上30歳未満のすべてのデータを取得する. 7.3ファジイクエリーファジイクエリーファジイクエリーファジイクエリーファジイクエリーファジイクエリーファジイ次の例では、クエリユーザ名にアルファベット 7.4 IDで検索 7.5検索データ取得個数 7.6ページングクエリチェーン書き方ページングクエリを実現する.
三、フック関数
林子はどんな鳥でもいるが、mongoseモジュールは、次々と現れるビジネスロジックを処理するための他の2つの傍受方法を提供している.
すべてのメソッドがリスニングできるわけではありません.リスニングできるメソッドは次のように収集されます.
1.
methodメソッドを実行する前にpreメソッドを実行します.
2.
methodメソッドが実行されるとpostメソッドが実行されます.
四、参考文章
1.Mongooseの紹介と入門
2.nodeサードパーティライブラリの【mongoseモジュール】
3.Mongoose初使用まとめ
1.概要
mongoseモジュールは、nodeとデータベースmongodbとの間の操作を簡略化するために使用され、簡単なAPIを通じてデータベースを操作する行為をjavascriptオブジェクトを操作する行為に変えることを目的としている(nodeJSを用いて開発されているため、javascriptに対してより親近感を持つことが多い).主なAPIは3つあります.
2.環境要求
使用
mongoose
取付要求nodejs
とmongodb
、もちろん再取付しましたmongodb
最高でした.nodejsインストールチュートリアル
【mongodb+クライアント】図文インストールチュートリアル
3.インストール
mongoseはサードパーティ製パッケージで、使用前にインストールします.
$ npm install mongoose
二、APIドキュメント
1.データベースへの接続
var mongoose = require('mongoose');
const DB_URL = 'mongodb://localhost:27017/testuseage';
// mongoose API,
mongoose.connect(DB_URL);
// mongoose , :connected、error、disconnected,
// ,
mongoose.connection.on('connected', function () {
console.log('Mongoose connection open to ' + DB_URL);
});
// , mongodb
mongoose.connection.on('error', function (err) {
console.log('Mongoose connection error: ' + err);
});
// ,
mongoose.connection.on('disconnected', function () {
console.log('Mongoose connection disconnected');
});
説明:
DB_URL = 'mongodb://localhost:27017/testuseage';
については、2分割可能mongodb://localhost:27017/
およびtestuseage
.mongodb://localhost:27017/
mongodb
接続を教えたのはmongodb
データベースであって、mysql
その他のデータベースではない.localhost
mongodb
データベースがある機器のipアドレスは、通常自分でプレイしても自分のコンピュータにインストールされ、ipのデフォルトはlocalhost;27017
この数字はmongodb
のデフォルト接続ポート番号ですが、インストール時に変更がなければこれですが、インストール時にポート番号を変更した場合は、ここに修正したポート番号を書いてください.testuseage
mongodb
中性子データベースの名前mongodb
同mysql
と、複数のデータベースを作成でき、各データベースの下に独自のテーブルがある.mongodb
にこのサブデータベースがない場合、自動的に作成されます.2.データベース表の作成
var mongoose = require('mongoose');
//
var Schema = mongoose.Schema;
// ,
var UserSchema = new Schema({
username: {type: String, index: true, required: true},
userpwd: String,
userage: {type: Number, min: 18, max: 100},
logindate: {type: Date, default: new Date()}
});
上のコードの
index
インデックスを作成します.これは他のデータベースを使ったことがある人はどういう意味か知っているはずです.default
デフォルト値、新規データ作成時に当該フィールドに値が付与されていない場合は、デフォルト値を使用する.required
ブール値、必須ベリファイア;min
数値、最小値;max
数値、最大値;lowercase
ブール値、小文字に変換;trim
ブール値、前後スペースを除くtype
対応するフィールドのデータ型です.typeの属性が1つしかない場合は、typeのタイプを直接書くことができます.また、他のデータ型は以下のように収集されています.3.テーブルに対応するjavascriptオブジェクトの作成
// UserSchema javascript ,
var User = mongoose.model('User', UserSchema);
4.データを追加
save
方法(インスタンスオブジェクト操作方法)// javascript , User , user
var user = new User({
username: 'Tracy Mc',
userpwd: 'abcd',
userage: 37,
logindate: new Date()
});
// save
user.save(function (err, res) {
if (err) {
console.log('Error: ' + err);
} else {
console.log('Res: ' + res);
}
});
create
方法(コンストラクタ操作方法)User.create({
username: 'bob james',
userpwd: '321',
userage: 32,
logindate: new Date()
}, function (err, res) {
if (err) {
console.log('Error: ' + err);
} else {
console.log('Res: %o', res);
}
});
update
方法update(condition, updateobj, multi, callback);
condition
変更されたオブジェクトはデータベースに既に存在するデータであるべきであり、ownobjはクエリ条件であり、以下の例ではクエリusernameがTracy Mc
のオブジェクトが変更される.updateobj
変更するフィールドは、以下の例ではユーザパスワードフィールドを変更する.multi
固定書き方{multi: false}
ownobjで照会されたデータが1つだけではない可能性があるので、ここでfalseに設定した場合、何件のデータを照会しても、常に1つ目のデータを修正する.callback
コールバック関数は、現在の更新が成功したか否かを判断する.次の例では、res = { n: 1, nModified: 1, ok: 1 }
、n
ownobjがクエリしたオブジェクトの個数を示し、nModified
実際に修正したオブジェクトの個数、okは修正に成功したオブジェクトの個数である.//
var condition = {'username': 'Tracy Mc'};
var updatestr = {'userpwd': 'cccc'};
var multi = {multi: false};
User.update(condition, updatestr, multi, function (err, res) {
if (err) {
console.log('Error: ' + err);
} else {
console.log('Res: %o', res);
}
});
findByIdAndUpdate
方法findByIdAndUpdate(id, updateobj, callback)
id
そのデータのidを修正する.updateobj
変更するフィールドは、以下の例ではユーザパスワードフィールドを変更する.callback
コールバック関数は、現在の更新が成功したか否かを判断する.パラメータres
idに基づいてクエリされたデータオブジェクト.var id = '59a3c01e50f4b32148fe49a5';
var updatepwd = {'userpwd': 'vvvv'}
User.findByIdAndUpdate(id, updatepwd, function (err, res) {
if (err) {
console.log('Error: ' + err);
} else {
console.log('Res: %o', res);
}
});
// res = { _id: 59a3c01e50f4b32148fe49a5,
// username: 'bob james',
// userpwd: '321',
// userage: 32,
// logindate: 2017-08-28T07:02:54.537Z,
// __v: 0 }
6.データの削除
remove
方法remove(condition, callback)
condition
変更されたオブジェクトはデータベースに既に存在するデータであるべきであり、ownobjはクエリ条件であり、以下の例ではクエリusernameがbob james
のオブジェクトが変更される.callback
コールバック関数は、現在の更新が成功したか否かを判断する.次の例では、res = { n: 1, ok: 1 }
、n
ownobjがクエリしたオブジェクトの数を示し、okは削除に成功したオブジェクトの数である.var condition = {'username': 'bob james'};
User.remove(condition, function (err, res) {
if (err) {
console.log('Error: ' + err);
} else {
console.log('Res: %o', res);
}
});
findByIdAndRemove
方法findByIdAndRemove(id, callback)
id
そのデータのid値を削除する.callback
コールバック関数は、現在の削除が成功したか否かを判断する.resはidクエリに基づいてクエリされたオブジェクトです.var id = '59a3c70b2be0770b846a752e';
User.findByIdAndRemove(id, function (err, res) {
if (err) {
console.log('Error: ' + err);
} else {
console.log('Res: %o', res);
}
});
7.クエリーデータ
find(condition, showfields, callback)
var condition = {'userage': 23};
var showfields = {'username': 1, '_id': 0}
User.find(condition, showfields, function (err, res) {
if (err) {
console.log('Error: ' + err);
} else {
console.log('Res: %o', res);
}
});
// res = [ { username: 'dkvirus' } ]
var condition = {userage: {$gte: 20, $lte: 30}};
User.find(condition, function (err, res) {
if (err) {
console.log('Error: ' + err);
} else {
console.log('Res: %o', res);
}
});
常用演算子収集:$or
$nor
$gt
$gte
$lt
$lte
$ne
$in
$nin
$all
$regex ,
$size
$maxDistance , ( LBS)
$mod
$near , ( LBS)
$exists
$elemMatch
$within ( LBS)
$box , ( LBS)
$center , ( LBS)
$centerSphere , ( LBS)
$slice ( , N M )
c
が含まれているデータについて、大文字と小文字を区別しない.var condition = {'username': {$regex: /c/i}};
User.find(condition, function (err, res) {
if (err) {
console.log('Error: ' + err);
} else {
console.log('Res: %o', res);
}
});
findById(id, callback)
var id = '59a3b25db0ddb621701db1cb';
User.findById(id, function (err, res) {
if (err) {
console.log('Error: ' + err);
} else {
console.log('Res: %o', res);
}
});
count(condition, callback)
var condition = {userage: {$gte: 20, $lte: 30}};
User.count(condition, function (err, res) {
if (err) {
console.log('Error: ' + err);
} else {
console.log('Res: %o', res);
}
});
var pageSize = 5; //
var currentPage = 1; //
var sort = {'logindate': -1}; // -1 ,1
var condition = {}; //
var skipnum = (currentPage - 1) * pageSize; //
User.find(condition) //
.skip(skipnum) // skipnum
.limit(pageSize) // skipnum pageSize
.sort(sort) //
.exec(function (err, res) { // res
if (err) {
console.log('Error: ' + err);
} else {
console.log('Res: %o', res);
}
});
三、フック関数
林子はどんな鳥でもいるが、mongoseモジュールは、次々と現れるビジネスロジックを処理するための他の2つの傍受方法を提供している.
すべてのメソッドがリスニングできるわけではありません.リスニングできるメソッドは次のように収集されます.
save
remove
findOneAndRemove
update
findOneAndUpdate
find
findOne
count
init
validate
1.
pre(method, callback)
methodメソッドを実行する前にpreメソッドを実行します.
var Schema = mongoose.Schema;
var UserSchema = new Schema({ username: 'String' });
// pre save
UserSchema.pre('save', function (next) {
cosnole.log(' ');
next();
});
var User = mongoose.model('User', UserSchema);
var user = new User({
username: 'dkvirus'
});
user.save(function (err, res) {
if (err) {
console.log('Error: ' + err);
} else {
console.log('Res: ' + res);
}
});
2.
post(method, callback)
methodメソッドが実行されるとpostメソッドが実行されます.
var Schema = mongoose.Schema;
var UserSchema = new Schema({ username: 'String' });
// post save
UserSchema.post('save', function (res) {
console.log(' , Id : ' + res._id);
});
var User = mongoose.model('User', UserSchema);
var user = new User({
username: 'dkvirus'
});
user.save(function (err, res) {
if (err) {
console.log('Error: ' + err);
} else {
console.log('Res: ' + res);
}
});
四、参考文章
1.Mongooseの紹介と入門
2.nodeサードパーティライブラリの【mongoseモジュール】
3.Mongoose初使用まとめ