2

モデルに対して多くのインデックスを作成したいのですが、クエリを実行しているときに、そのクエリで特定のインデックスを使用します

これは私のモデルです

var mongoose = require('mongoose'),
Schema = mongoose.Schema;

var ThingSchema = new Schema({

        word:{
            type: 'ObjectId',
            required:true
        },
        frecuency:{
            type: String,
            default:'enabled'
        },
        document:{
            documentId:{
                type: 'ObjectId'
            },
            quality:{
                type: Number
            }
        },
        location: {
            type: [Number],
            index: '2d' 
        },
        createdAt: {
            type: Date,
            default: Date.now
        },
        updatedAt: {
            type: Date,
            default: Date.now
        }
    });

module.exports = mongoose.model('Thing', ThingSchema);

これらのインデックスが必要です:

  • 単語ごとのインデックス (文字列です)
  • 場所別インデックス (geoindex)
  • 単語と場所による索引

クエリを実行しているときに、使用するインデックスを指定したいと思います

4

1 に答える 1

2

あなたのmodule.exports行の前に:

ThingSchema.index({word: 1});
// all other indexes you want to add...

そして、クエリを作成するときは、使用hint()するインデックスを指定するために使用します。

Thing.find({...}).hint({word: 1});
于 2015-12-15T07:04:14.527 に答える