2016-10-26 8 views
0

に対する化合物のインデックスは、私は次のMongoDBのスキーマを持っている:のMongoDB:「どこで」-Select

mandate: { 
    type: mongo.Schema.Types.ObjectId, 
    ref: 'Mandate', 
    required: true 
    }, 
    observer: { 
    type: mongo.Schema.Types.ObjectId, 
    ref: 'Observer', 
    required: true 
    }, 
    value: { 
    type: Number, 
    required: true 
    }, 
    observedAt: { 
    type: Date, 
    required: true 
    } 

このコレクションは、大量のデータを保持しています。

私は、次の方法でデータを尋ねる: は私 オブザーバー=「」と 任務=「B」

がベストプラクティスあり2015年と2016 との間のすべてのデータ observerdを与えます3つのフィールド(observer、mandate、observedAt)にわたる複合インデックスのアプローチ?今日のために

、私はこのような次の操作を行います。

schema.index({ 
    mandate: 1, 
    observer: 1, 
    observedAt: -1 
}); 

またこの正しい方法?

答えて

0

これらの3つのフィールドのすべてを使用してクエリを実行する場合は、例のようにしてからyesを選択します。また、observedAtを最後の索引として使用したため、そのフィールドでsortを指定することもできます。ソート段階では索引が使用されます。

しかし、クエリが少ないフィールドまたはそれ以上のフィールドを使用して変更される可能性があるので、最適なオプションではない可能性があります。詳細はこちらをご覧ください。具体例をご覧ください。

https://docs.mongodb.com/manual/core/index-compound/

関連する問題