次のように動作する必要のあるアプリケーションがあります。
- アプリケーションユーザーがフィルタを設定し、アプリケーションが引用符を返したとき。
- そのユーザーが「見積もり」を好き嫌いすることがあります
約60K引用符とほぼ同数のユーザーがあります。 埋め込み配列を使用して、好きな値を&に詰め込んだり、別のコレクションを作成してから検索したりするのは混乱します。 私は2andオプションが2つのクエリを必要とし、より遅くなることを知っています。Tinderのようなアプリケーション、組み込みドキュメント、または別のコレクションのためのMongoDBスキーマ設計?
エンベデッドアレイメソッドを使用すると、パフォーマンスの低下が目撃される前にいくつの引用符IDを格納できますか?
var UserSchema = mongoose.Schema({
fullName : {type: String,trim: true},
gender : {type: String,enum: ['male', 'female']},
age : {type: Number,required: true},
viewed : []
});`
PS:同様の機能を達成するための任意のより良い方法があれば、コメントや溶液中で言及しない
EDIT 1:
ヒントを@niralパテルいただきありがとうございます。
私はMongoDBはこの質問への可能な解決策で行った調査に基づき、私は現実の世界でしまうcome from another collection
について10K
乱数の配列を作成し、$nin
オペレータとマングースの検索クエリにそれを渡されたテストを考案し 高負荷ではクエリが遅くなることが予想されましたが、テストではかなり高速でした。
()4GBデュアルコアボックス Ubuntuで動作しています。 httpプロキシの後ろに2つのノードプロセスがあります。
私の最後のクエリでは、あなたがより多くを成長しないだろう言っていますか嫌い引用符の量を知っていればmongodb.com
6 rules of thumb for MongoDB schema
から、この有益な記事によると、この
var userIDs = [];
// filling userIDs with random numbers
for(var i=0;i<10000;i++){
userIDs.push(Math.floor(Math.random() * (90000 - 50000)) + 50000);
}
users.find(user_id:{$nin:userIDs}}).limit(10).lean().exec(function(e,d){
console.log(d); // results
});
私は、開発者の多くが見たように、私はRDBMSの背景からmongodbのドキュメントを参照しています。結果の計算の段階をサポートする集約フレームワークについて言及しています。したがって、私の場合は、集約? – Harshwardhan
@Harshwardhanはい、あなたはマングースを使っているなら、あなたは人口を使うことができます。 [リンク](http://mongoosejs.com/docs/populate.html)。 –