2016-12-10 2 views
1

私はMongodbのスキルレスアーキテクチャが好きです。それはとても柔軟になります。しかし、Mongoose ODMが提供するモデル関係やデータ検証のような特定の要件があります。Mongoでスキーマまたはスキルを使用している

実際に複雑なドキュメント構造を扱う際のMongooseのパフォーマンスは、私の場合、NodeJSドライバのネイティブMongoDBドライバと比較してそれほど良くないことがわかっています。

私は必要なときにいつでも自分の構造を変更することが本当に素晴らしいことになる、スキーマレスの柔軟性を失いたくありません。しかし、私はモデルの関係を使いたい。

Mongoでは特にスキーマを使用するかスキーマを使用する方が良いでしょうか?

答えて

0

ここでは、mongooseが提供するオーバーヘッドの一部を回避するための方法と、スクリプト内のNodeJsドライバ用のネイティブmongoDbコマンドにアクセスする方法について説明します。

The mongodb.Db instanceにアクセスできます。

のため、Nodejsドライバのdb constructorにアクセスできます。

だから私は私のノードのjs /マングースファイルにこのようなものを行うことができ

mongoose.connection.db.dropCollection("collectionName", function(err, doc){ 
    if(err) console.log(err); 
    console.log(doc); 
}) 

また、あなたはマングースは、あなたがクエリから返されたオブジェクトの上に余分なプロパティで提供してオーバーヘッドをしたくない場合は.lean()を使用できます。 leanを使用すると、普通のjavascriptオブジェクトが返され、mongooseドキュメントは返されません。リーンははるかに高速です。

例::

Model.find().lean().exec(function (err, docs) { 
    docs[0] instanceof mongoose.Document // false 
}); 
関連する問題